如何修改apk以从启动器隐藏?

时间:2018-07-22 05:48:46

标签: java android

我想将apk修改为隐藏的应用程序。请提供可能的解决方案。

2 个答案:

答案 0 :(得分:0)

您需要从AndroidManifest.xml中删除以下行:

<category android:name="android.intent.category.LAUNCHER"/>

这将从默认启动器中删除该应用程序。但是,您还需要添加以下行,以使BroadcastReceiver不会被完全忽略:

<category android:name="android.intent.category.DEFAULT"/>

您不应删除下面的行-它用于指定打开应用后应首先启动哪个Activity

<action android:name="android.intent.action.MAIN"/>

为了从另一个应用程序启动上面讨论的应用程序,您不能使用问题中显示的调用。当您从Intent文件中明确删除以下行时,您正在尝试通过创建带有CATEGORY_LAUNCHER标签(i.addCategory(Intent.CATEGORY_LAUNCHER))的AndroidManifest.xml来打开应用程序:

<category android:name="android.intent.category.LAUNCHER" />

如果没有上述行,则表示您尝试调用的应用程序将忽略启动Intent。为了启动您的应用程序,您将需要对另一个Intent进行操作。这是一个示例,显示了如何通过响应SMS IntentHow to launch an Android app without "android.intent.category.LAUNCHER"

来打开不包含启动意图过滤器的应用程序

您选择使用哪种用途完全取决于您-只需确保将其添加到AndroidManifest.xml文件中即可。

答案 1 :(得分:0)

使用此代码隐藏图标:

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class); // activity which is first time open in manifiest file which is declare as <category android:name="android.intent.category.LAUNCHER" />
p.setComponentEnabledSetting(componentName,PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);

使用此功能将其恢复:

PackageManager p = getPackageManager();
ComponentName componentName = new ComponentName(this, com.apps.MainActivity.class);
p.setComponentEnabledSetting(componentName, PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP);

祝一切顺利! :)