And*_*ard 3 android android-management-api
按照Android 管理 API 参考,我们已将 Android 配套应用程序配置为能够:启用系统应用程序、隐藏和取消隐藏程序包。
我们在策略配置中添加了以下信息:
{
'
'
'
"applications": [
{
"packageName": "com.domain.app",
"installType": "REQUIRED_FOR_SETUP",
"defaultPermissionPolicy": "GRANT",
"delegatedScopes": [
"ENABLE_SYSTEM_APP",
"PACKAGE_ACCESS"
]
}
],
'
'
'
}
Run Code Online (Sandbox Code Playgroud)
然后,在我们的 Android Companion 应用程序中,我们根据此处和此处的Google 文档添加了以下代码行:
DevicePolicyManager dpm = (DevicePolicyManager) mContext.getSystemService(Context.DEVICE_POLICY_SERVICE);
ComponentName admin = new ComponentName(mContext, DeviceAdminReceiver.class);
// Iterate through system application package names list
for (String packageName : systemAppsList) {
if (packageName != null && !packageName.equals("")) {
try {
// Re-enable a system app that was disabled by default when the user was initialized
dpm.enableSystemApp(admin, packageName);
// Unhide a package (it could be any app : system, managed, etc...)
dpm.setApplicationHidden(admin, packageName, false);
} catch (SecurityException e) {
e.printStackTrace();
Log.e(TAG, e.getMessage());
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们希望 Android 启动器显示已启用的系统应用程序,但 Android 会捕获 aSecurityException并打印以下错误日志:
没有活动的管理员 ComponentInfo{com.domain.app/android.app.admin.DeviceAdminReceiver}
你知道什么可能是错的吗?
在您的方法调用中,如果您使用的是Android 文档中所述的委托范围,请将管理参数设置为 null
ComponentName:此请求与哪个 DeviceAdminReceiver 关联,如果调用方是包访问委托,则为 null。此值绝不能为空。
有点混乱,如果使用委托范围,并且在同一时间之后,admin 参数可以设置为 null ......这个值永远不能为 null ,(伟大的谷歌)
| 归档时间: |
|
| 查看次数: |
704 次 |
| 最近记录: |