开发者社区> 问答> 正文

Android开发中如何在Service中打开设备管理器?报错

我想在Service中打开设备管理器
Intent intent = new Intent(DevicePolicyManager.ACTION_ADD_DEVICE_ADMIN);
intent.putExtra(DevicePolicyManager.EXTRA_DEVICE_ADMIN, componentName);
intent.putExtra(DevicePolicyManager.EXTRA_ADD_EXPLANATION, "打开设备管理器");
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);


这会是没有报错了,但是就是没有效果.
代码也执行了,但是就是没有跳转到"激活设备管理"界面.
如果不加intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 这条语句就会报错:
android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want?

上面这段代码如果放在Activity中的话,则可以正常工作(前提是要将intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);注释掉).

展开
收起
爱吃鱼的程序员 2020-06-14 15:23:46 693 0
2 条回答
写回答
取消 提交回答
  • 需要手动开启管理员设置权限页面,代码就是无法开启授权页面。

    2021-09-08 10:50:07
    赞同 展开评论 打赏
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    这个问题解决了么?如果解决请回复?

    激活调用的不是startActivity 而是startActivityForResult()所以service无法用这种方式实现

    2020-06-14 15:24:04
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载