我正在尝试开发一个应用程序,我必须使用受“签名系统”保护级别保护的权限“android.permission.READ_NETWORK_USAGE_HISTORY”。
要使用此权限,我已将我的apk复制到android 4.4.2 avd的/ system / app / location,以使我的应用程序作为系统应用程序运行。
但是当我运行应用程序时,我得到一个SecurityException 引起:java.lang.SecurityException:NetworkStats:用户10052和当前进程都没有android.permission.READ_NETWORK_USAGE_HISTORY。
我已在manifest中正确指定了权限,甚至将我的应用程序安装为系统应用程序,该应用程序应足以使用受上述权限保护的任何api。
现在的问题是,当我的应用有资格获得该权限时,为什么我会收到安全例外。
权限详情: https://android.googlesource.com/platform/frameworks/base/+/master/core/res/AndroidManifest.xml
答案 0 :(得分:1)
尝试将以下权限添加到您的清单中:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
答案 1 :(得分:1)
您不能仅仅通过将应用程序复制到系统/应用程序文件夹就可以说应用程序已成为系统应用程序。将应用程序制作为系统应用程序的主要先决条件是应用程序需要由与设备上的其他系统应用程序签名相同的签名密钥。对于硬件设备,这些是制造商在设备上签署操作系统时使用的密钥。