我想将apk修改为隐藏的应用程序。请提供可能的解决方案。
答案 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 Intent
:How 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);
祝一切顺利! :)