【问题标题】:How to hide other application's icon from my app如何从我的应用程序中隐藏其他应用程序的图标
【发布时间】:2017-12-09 07:22:01
【问题描述】:

我正在申请。我的应用程序获取所有已安装的应用程序。我想要的是隐藏某些选定应用程序的应用程序图标。为了隐藏应用程序图标,我使用了下面的代码,并且按预期工作。

 public void hideApp(String className) {
    PackageManager p = getPackageManager();
    ComponentName componentName = new ComponentName(this, className);
    p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
}

注意:我发送的类名带有完整的 pkg 名称。这完美地隐藏了我的应用图标

但是当我尝试隐藏具有完整包名的其他应用程序图标时,会出现如下所述的异常

IllegalArgumentException: Component class com.whatsapp.Main does not exist in com.example.abdulwaheed.testingproject

我的问题是我做错了什么?因为我错过了什么?有可能吗?

【问题讨论】:

    标签: android


    【解决方案1】:

    我没有这方面的经验,但我至少可以尝试为您指明正确的方向。

    我认为问题出在这一行:

    ComponentName componentName = new ComponentName(this, className);
    

    根据documentation

    这里封装了两条信息来标识一个组件:它所在的包(一个字符串),以及该包内的类(一个字符串)名称。

    因此,您实际上需要的是要隐藏的应用程序的包名,而不是指代您的活动的“this”。然后,您将他们的 className 放入第二个变量。

    我希望这会有所帮助!

    【讨论】:

    • 我尝试了您的解决方案,但它给出了以下异常 SecurityException: Permission Denial:尝试更改组件状态
    • 那是安卓操作系统的故意效果;您的应用程序必须是系统应用程序才能更改组件状态(这意味着您的应用程序必须针对可以将您的应用程序作为系统应用程序侧载的 root 用户)。这是另一个稍微解释一下的答案:stackoverflow.com/a/22277945/7612525
    猜你喜欢
    • 1970-01-01
    • 2012-01-13
    • 2020-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多