- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想显示 current bucket我的应用程序在 Android P beta 下的设备上。因此,我尝试像这样使用 UsageStatsManager 类:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (Build.VERSION.SDK_INT >= 28) {
UsageStatsManager usageStatsManager = (UsageStatsManager) getSystemService(USAGE_STATS_SERVICE);
if (usageStatsManager != null) {
Log.d(TAG, "getAppStandbyBucket():" + usageStatsManager.getAppStandbyBucket());
}
}
}
我的 list 拥有 android.permission.PACKAGE_USAGE_STATS 权限:
<uses-permission
android:name="android.permission.PACKAGE_USAGE_STATS"
tools:ignore="ProtectedPermissions" />
但是当我启动我的应用程序时遇到崩溃:
07-24 10:23:39.061 26967-26967/com.app.bucket E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.app.bucket, PID: 26967
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.bucket/com.app.bucket.MainActivity}: java.lang.SecurityException: MATCH_ANY_USER flag requires INTERACT_ACROSS_USERS permission at com.android.server.pm.PackageManagerService.getPackageUid:4343 com.android.server.pm.PackageManagerService$PackageManagerInternalImpl.getPackageUid:23964 com.android.server.usage.UsageStatsService$BinderService.getAppStandbyBucket:927 android.app.usage.IUsageStatsManager$Stub.onTransact:274 android.os.Binder.execTransact:731 : Neither user 10118 nor current process has android.permission.INTERACT_ACROSS_USERS.
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048)
at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Caused by: java.lang.SecurityException: MATCH_ANY_USER flag requires INTERACT_ACROSS_USERS permission at com.android.server.pm.PackageManagerService.getPackageUid:4343 com.android.server.pm.PackageManagerService$PackageManagerInternalImpl.getPackageUid:23964 com.android.server.usage.UsageStatsService$BinderService.getAppStandbyBucket:927 android.app.usage.IUsageStatsManager$Stub.onTransact:274 android.os.Binder.execTransact:731 : Neither user 10118 nor current process has android.permission.INTERACT_ACROSS_USERS.
at android.os.Parcel.createException(Parcel.java:1942)
at android.os.Parcel.readException(Parcel.java:1910)
at android.os.Parcel.readException(Parcel.java:1860)
at android.app.usage.IUsageStatsManager$Stub$Proxy.getAppStandbyBucket(IUsageStatsManager.java:658)
at android.app.usage.UsageStatsManager.getAppStandbyBucket(UsageStatsManager.java:479)
at com.app.bucket.MainActivity.onCreate(MainActivity.java:60)
似乎我错过了一个权限,但即使我添加了以下权限:
<uses-permission
android:name="android.permission.INTERACT_ACROSS_USERS"
tools:ignore="ProtectedPermissions" />
我仍然遇到同样的崩溃。我在想,也许我错过了权限的运行时调用,但就像 documentation规定:
NOTE: Most methods on this API require the permission android.permission.PACKAGE_USAGE_STATS. However, declaring the permission implies intention to use the API and the user of the device still needs to grant permission through the Settings application. See Settings.ACTION_USAGE_ACCESS_SETTINGS. Methods which only return the information for the calling package do not require this permission. E.g. getAppStandbyBucket() and queryEventsForSelf(long, long).
没必要。即使知道我尝试使用运行时权限,但我仍然遇到崩溃。如果有人看到缺少的东西,我将非常感谢您的帮助。
最佳答案
我认为这是一个错误。问题跟踪器中有一个 Unresolved 问题:https://issuetracker.google.com/issues/111102580 .
关于安卓 P : UsageStatsManager getAppStandbyBucket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51494512/
我正在使用这个 link生成应用程序使用状态。我对所选间隔的理解是,对于 YEARLY 间隔,它会为 beginTime 和 endTimeYEAR 的数据持续时间。同样,它应该适用于 WEEKLY
背景 Google 已弃用“ActivityManager”类的函数“getRecentTasks”。现在它所做的就是获取当前应用已打开的应用列表。 我什至写了一篇关于它的帖子 here on Sta
我想显示 current bucket我的应用程序在 Android P beta 下的设备上。因此,我尝试像这样使用 UsageStatsManager 类: @Override public vo
我正在尝试使用 UsageStatsManager 在带有 Marshmallow 的 Nexus 5 上获取前台应用程序。我记得它曾经有效,但出于某种原因,我现在得到包/类名称的空字符串。 这是我的
我正在尝试从 UsageStatsManager 查询 UsageStats,目的是返回每天使用的所有应用程序包以及使用时长。 代码: public static List getUsageStats
我正在尝试使用 UsageStatsManager。我了解我需要将以下内容放入我的 Android list 中: 但是,当我尝试这样做时,Eclipse 会抛出以下错误:与元素类型“uses-pe
如果我想获取今天应用使用情况的数据,首先我允许我的应用从设置中读取应用使用统计信息,然后我使用这个查询来获取 UsageStats UsageStatsManager usm = (UsageStat
我正在尝试在 Android Wear 设备上使用 UsageStatsManager。 我做了什么: 我正在手机上运行的移动应用程序上请求权限。在用户授予权限后,我可以访问使用情况统计数据。然后我在
我正在尝试从 UsageStatsManager 查询 UsageStats。我构建了一个 DateUtils 类,它为我提供了获取每天/每月/每年(一周即将到来)的开始和结束时间的方法,如下所示:
我正在开发一个 Android TV 应用(系统应用),我正在尝试使用 UsageStatsManager 获取最近使用的应用列表。 通过以下方法, UsageStatsManager usm = g
我需要获取有关最近应用使用情况的信息。 在 API 21 之前,它被使用 getRunningTasks或 getRecentTasks获取此信息。根据文档,这些方法已在 API 21 中弃用。 有U
每当我尝试查询 UsageStatsManager 的使用情况统计信息时,我都可以正确获取最后运行的应用程序。但是,如果我拉下状态栏并且有新通知,则上次使用的应用程序(基于 UsageStats)将更
我正在尝试获取手机上当前正在运行的应用程序列表。这是我正在使用的代码: if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION
您好,我正在使用 UsageStatsManager api 向用户显示一些使用列表。但我面临一些问题。我在很多设备上都遇到这个错误,在某些设备上它工作正常。我仍在浏览这个问题。你们能帮我解决这个问题
目标: 需要获取今天的使用情况统计信息(今天使用设备的总时间),即。中午 12 点到当前时间。 问题: 1.我得到今天的时间+一些其他无法解释的时间 2.不可解释的时间戳(getTimestamp 方
下面的代码在 6.0 版本之前工作正常 if(Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { U
我是一名优秀的程序员,十分优秀!