正如你可能知道的,自从Android 5发布以来,访问设备的最近任务(使用统计数据)需要用户手动启用此功能(设置->安全->使用访问)。
我的应用程序检查设备是否使用Android 5,如果是,它为用户提供了打开设置屏幕以启用使用访问的可能性:
Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
startActivityForResult(intent, 12345);
当我试图在运行Android 5的三星设备上执行此操作时,问题就来了……当上面显示的代码行被执行时,我得到了这个错误:
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.settings.USAGE_ACCESS_SETTINGS }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1801)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1499)
at android.app.Activity.startActivityForResult(Activity.java:3913)
似乎还没有实现Settings.ACTION_USAGE_ACCESS_SETTINGS操作,这很奇怪,因为如果你进入设置,就会有允许应用程序访问此使用情况统计数据的选项...
对于这个特定的案例,你知道如何解决这个问题吗?
发布于 2016-06-21 16:02:15
很抱歉回复晚了,我希望你已经找到了一个很好的解决方案,但是如果没有,或者对于其他有这个问题的人,
这个bug似乎存在于某些三星机型中,为了避免你的应用程序崩溃,也许你可以检查一下你的意图是否可以处理
PackageManager packageManager = getActivity().getPackageManager();
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent);
} else {
Toast.makeText(getBaseContext(), "Please open settings, your model can't be forced
to open it", Toast.LENGTH_LONG).show();
}
https://stackoverflow.com/questions/28296633
复制相似问题