相关疑难解决方法(0)

适用于Android 5 Samsung设备的Android使用权限

您可能知道,自Android 5启动以来,访问设备的最近任务(使用情况统计信息)需要用户手动启用此功能(设置 - >安全 - >使用权限).

我的应用程序检查设备是否使用Android 5,如果是,则为用户提供打开设置屏幕以启用使用权限的可能性:

Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
                    startActivityForResult(intent, 12345);
Run Code Online (Sandbox Code Playgroud)

当我尝试在运行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)
Run Code Online (Sandbox Code Playgroud)

似乎尚未实现Settings.ACTION_USAGE_ACCESS_SETTINGS操作,这很奇怪,因为如果您转到"设置"选项以启用应用程序以访问此使用情况统计信息是...

知道如何解决这个特定情况下的这个问题?

android usage-statistics samsung-mobile android-5.0-lollipop

26
推荐指数
1
解决办法
5073
查看次数

检查我的应用程序是否启用了使用权限

我正在使用新的UsageStatsManagerAPI来获取 Android 5.0 Lollipop中的当前前台应用程序.要使用此API,用户必须在Settings->Security->Apps with usage access屏幕中启用该应用程序.

我使用此Intent将用户直接发送到此屏幕:


startActivity(new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS));
Run Code Online (Sandbox Code Playgroud)

现在,我想验证用户启用我的应用程序.我想这样做,就像我验证用户启用我的应用程序使用NotificationListenerService但我不知道什么是String键,如果它甚至存在.


Settings.Secure.getString(contentResolver, "enabled_notification_listeners");
// Tried Settings.ACTION_USAGE_ACCESS_SETTINGS as key but it returns null

第二种方法是查询使用情况统计信息并检查它是否返回结果(当应用程序未启用时返回一个空数组)并且它大部分时间都有效,但有时即使我的应用程序启用也会返回0结果.


UsageStatsManager mUsageStatsManager = (UsageStatsManager) context.getSystemService("usagestats");
long time = System.currentTimeMillis();
List stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 10, time);

if (stats == null || stats.isEmpty()) {
    // Usage access is not enabled
}
Run Code Online (Sandbox Code Playgroud)

有没有办法检查我的应用程序是否启用了使用权限?

android usage-statistics

25
推荐指数
4
解决办法
1万
查看次数

Android Lollipop知道app是否可以访问Usage Stats

自Android Lollipop以来,我们现在拥有一个用于访问应用使用情况统计数据的API.但是,您的应用必须由用户授予这些权限.

我知道使用Settings.ACTION_USAGE_ACCESS_SETTINGS将用户重定向到这些设置.

现在,我的问题是您如何知道用户已授予您这些权限,以便您可以停止将其重定向到设置.

谢谢!

android usage-statistics android-recents android-5.0-lollipop

7
推荐指数
2
解决办法
1万
查看次数

android.content.ActivityNotFoundException:找不到处理Intent的Activity {act = android.settings.USAGE_ACCESS_SETTINGS}

此问题仅在Android 5.0 Lollipop上发生.我没有使用Lollipop的手机,我已经在Genymotion Android Emulator中开发了代码,但这个问题在模拟器中不会发生.我只是从用户的手机上失败了堆栈跟踪.

我的代码:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
    Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS);
    startActivity(intent);
} 
Run Code Online (Sandbox Code Playgroud)

应用程序崩溃和我从用户获得的堆栈跟踪:

android.content.ActivityNotFoundException: No Activity found to handle Intent {     act=android.settings.USAGE_ACCESS_SETTINGS }
at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1765)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:1485)
at android.app.Activity.startActivityForResult(Activity.java:3780)
at android.app.Activity.startActivityForResult(Activity.java:3741)
at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:849)
at android.support.v4.app.Fragment.startActivity(Fragment.java:880)
at     com.myapp.myfirstapp.fragments.addablock.apps.Fragment_appsselect_addblock$2.onClick(Fragment_ appsselect_addblock.java:147)
at android.view.View.performClick(View.java:4763)
at android.view.View$PerformClick.run(View.java:19821)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5274)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)
Run Code Online (Sandbox Code Playgroud)

android android-intent start-activity android-5.0-lollipop

7
推荐指数
1
解决办法
4758
查看次数