Java 访问设置时出现Android安全异常
我需要从我的应用程序中打开使用情况统计设置。对于大多数手机,一切正常:Java 访问设置时出现Android安全异常,java,android,android-securityexception,Java,Android,Android Securityexception,我需要从我的应用程序中打开使用情况统计设置。对于大多数手机,一切正常: startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS)); 然而,像华为Y6 Pro这样的一些手机会从ProcessRecord{3f032f8b 18712:com.example.Pro/u0a924}(pid=18712,uid=10924)抛出安全异常java.lang.SecurityException:Permission Denial:s
startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));
然而,像华为Y6 Pro这样的一些手机会从ProcessRecord{3f032f8b 18712:com.example.Pro/u0a924}(pid=18712,uid=10924)抛出安全异常java.lang.SecurityException:Permission Denial:starting Intent{act=android.settings.USAGE\u ACCESS\u settings cmp=com.android.settings/.settings$UsageAccessSettingsActivity}未从uid 1000导出
有没有办法检查我是否可以执行
startActivity
,并且它不会引发任何异常 更新
试试这个:
将此添加到您的活动清单中
<activity
android:name=".MainActivity"
android:exported="true">
</activity>
我想您可以检查一下,是否可以使用此 科特林:
fun canPerformIntent(context: Context, intent: Intent): Boolean {
val mgr = context.packageManager
val list = mgr.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY)
return list.size > 0
}
爪哇:
我想我需要把它放在activity com.android.settings/.settings$UsageAccessSettingsActivity中。然而,我不能这样做。
public static boolean canPerformIntent(Context context, Intent intent) {
PackageManager mgr = context.getPackageManager();
List<ResolveInfo> list = mgr.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
return list.size() > 0;
}
if (canPerformIntent(this, Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS))) {
//TODO: start the intent
}