【问题标题】:Attempt to change component state security exception in android尝试在android中更改组件状态安全异常
【发布时间】:2014-04-12 05:47:12
【问题描述】:

嗨,我正在框架方面工作,实现一个测试应用程序以禁用另一个应用程序,但是当我运行我的测试应用程序时它显示

Java.lang.SecurityException: Permission Denial: attempt to change component state from pid=xxx,uid=xxxx,package uid=xxx
at xxxxxxxx

我的java代码

PackageManager pm = getApplicationContext().getPackagemanager();
pm.setComponentEnabledSetting(new ComponentName("com.example","MainActivity"),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,PackageManager.DONT_KILL_APP);

AndroidManifest.xml

<uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE>

我都尝试过以上权限(权限只授予系统应用程序),也尝试过标签但没有幸运

如何使用被授予权限的系统应用,

请大家帮我解决这个问题

提前致谢

【问题讨论】:

    标签: java android permissions


    【解决方案1】:

    如果您的应用程序不是系统分区的一部分,那么您将不会被授予权限。将应用程序放入系统分区并确认在 dexopt 期间解析您的应用程序时的 PackageManager 授予您所需的权限。

    【讨论】:

    • 我已将 apk 推送到系统并绑定,但当我分析 devoce 日志猫时没有运气,我看到了同样的异常,您能否建议我是否做错了什么
    • 如上所述,请确保 PacakageManager 在 dexopt 期间授予您权限。
    【解决方案2】:

    除非您的应用是系统应用,否则您无法启用/禁用应用

    【讨论】:

      【解决方案3】:

      如果您的设备已root,您只需将apk 复制到/system/app(4.4+ 为/system/priv-app)即可将您的应用安装为系统应用。这将允许您使用“仅限系统”权限。

      【讨论】:

        【解决方案4】:

        我的步骤是:

        1. 使用命令禁用包:pm disable "packageName"

        2. 使用命令启用 packageName:pm enable packageName

        3. 如果您知道名称活动主体,则启动主体活动, Intent i = new Intent(Intent.ACTION_MAIN); i.setComponent(new ComponentName("namePackage", "namePackage.MainPrincipal")); i.addCategory(Intent.CATEGORY_LAUNCHER); startActivity(i);

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2020-08-06
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-03-17
          • 2011-05-02
          • 2012-02-25
          相关资源
          最近更新 更多