IBatteryStats.Stub.asInterface(ServiceManager.getService(batterystats))没有权限

时间:2016-11-17 08:19:17

标签: android

 mBatteryInfo = IBatteryStats.Stub.asInterface(ServiceManager.getService(BatteryStats.SERVICE_NAME));

    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.BATTERY_STATS" />

这是BatteryStatsHelp,我在清单中有这个权限,但仍有错误

Caused by: java.lang.SecurityException: uid 10160 does not have android.permission.BATTERY_STATS.
    at android.os.Parcel.readException(Parcel.java:1599)
    at android.os.Parcel.readException(Parcel.java:1552)
    at com.android.internal.app.IBatteryStats$Stub$Proxy.getStatisticsStream(IBatteryStats.java:1143)
    at com.android.internal.os.BatteryStatsHelper.getStats(BatteryStatsHelper.java:755)
    at com.android.internal.os.BatteryStatsHelper.load(BatteryStatsHelper.java:746)
    at com.android.internal.os.BatteryStatsHelper.getStats(BatteryStatsHelper.java:236)
    at com.android.internal.os.BatteryStatsHelper.refreshStats(BatteryStatsHelper.java:323)
   at com.android.internal.os.BatteryStatsHelper.refreshStats(BatteryStatsHelper.java:316)
   at com.android.internal.os.BatteryStatsHelper.refreshStats(BatteryStatsHelper.java:296)
   at com.example.administrator.vhtest.MainActivity.onCreate(MainActivity.java:73)

1 个答案:

答案 0 :(得分:0)

您无法获得此权限。谷歌正在逐步关闭每个新版本对私有系统API的访问权限。 API 23中引入的权限模型是使这种过程成为可能的关键和起点。 您的应用程序必须是系统应用程序(使用与系统应用程序相同的证书进行签名)才能省略SecurityException

如果您想知道如何省略它并使其仅在模拟器设备上工作,请查看TestButler项目。他们有一个有趣的approach