diff --git a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java index 5c6e9ecf..5fd38696 100644 --- a/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java +++ b/app/src/main/java/org/autojs/autojs/ui/main/MainActivity.java @@ -141,7 +141,7 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega } private void checkPermissions() { - checkPermission(Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_EXTERNAL_STORAGE); + checkPermission(Manifest.permission.READ_EXTERNAL_STORAGE); } private void showAccessibilitySettingPromptIfDisabled() { @@ -245,18 +245,6 @@ public class MainActivity extends BaseActivity implements OnActivityResultDelega if (getGrantResult(Manifest.permission.READ_EXTERNAL_STORAGE, permissions, grantResults) == PackageManager.PERMISSION_GRANTED) { StorageFileProvider.getDefault().notifyStoragePermissionGranted(); } - - if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE) == PackageManager.PERMISSION_DENIED) { - new ThemeColorMaterialDialogBuilder(this) - .title(R.string.text_no_phone_state_permission) - .content(R.string.info_no_phone_state_permission) - .positiveText(R.string.text_request_permission) - .negativeText(R.string.text_exit) - .cancelable(false) - .onPositive(((dialog, which) -> checkPermissions())) - .onNegative((dialog, which) -> finish()) - .show(); - } } private int getGrantResult(String permission, String[] permissions, int[] grantResults) { diff --git a/autojs/src/main/java/com/stardust/autojs/runtime/api/Device.java b/autojs/src/main/java/com/stardust/autojs/runtime/api/Device.java index 9c5599d5..5d9e58d9 100644 --- a/autojs/src/main/java/com/stardust/autojs/runtime/api/Device.java +++ b/autojs/src/main/java/com/stardust/autojs/runtime/api/Device.java @@ -1,10 +1,12 @@ package com.stardust.autojs.runtime.api; +import android.Manifest; import android.annotation.SuppressLint; import android.app.ActivityManager; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; +import android.content.pm.PackageManager; import android.media.AudioManager; import android.net.wifi.WifiInfo; import android.net.wifi.WifiManager; @@ -98,6 +100,7 @@ public class Device { @SuppressLint("HardwareIds") @Nullable public String getIMEI() { + checkReadPhoneStatePermission(); try { return ((TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE)).getDeviceId(); } catch (SecurityException e) { @@ -105,6 +108,7 @@ public class Device { } } + @SuppressLint("HardwareIds") public String getAndroidId() { return Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.ANDROID_ID); @@ -287,6 +291,16 @@ public class Device { } + private void checkReadPhoneStatePermission() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { + if (mContext.checkSelfPermission(Manifest.permission.READ_PHONE_STATE) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException(mContext.getString(R.string.no_read_phone_state_permissin)); + } + } + } + + // just to avoid warning of null pointer to make android studio happy.. @NonNull @SuppressWarnings("unchecked") diff --git a/autojs/src/main/res/values/strings.xml b/autojs/src/main/res/values/strings.xml index d8c72379..a2ce0e93 100644 --- a/autojs/src/main/res/values/strings.xml +++ b/autojs/src/main/res/values/strings.xml @@ -20,6 +20,7 @@ 本脚本需要Auto.js版本号%d以上才能运行 打开侧拉菜单 关闭侧拉菜单 + 没有读取设备信息权限