我想从启动器隐藏我的Android应用程序,但能够从另一个应用程序中调用它。我迷失了从android清单中删除的内容。
已经尝试删除......
<intent-filter >
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
...但是当从另一个应用程序调用时它不会打开。
以下是我如何调用此隐藏的
Intent i;
PackageManager manager = getPackageManager();
try {
i = manager.getLaunchIntentForPackage("org.xbmc.xbmc");
if (i == null)
throw new PackageManager.NameNotFoundException();
i.addCategory(Intent.CATEGORY_LAUNCHER);
startActivity(i);
} catch (PackageManager.NameNotFoundException e) {
这是清单的顶部
xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_TASKS" />
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher" android:hasCode="true" android:debuggable="true">
<activity android:theme="@*android:style/Theme.NoTitleBar.Fullscreen" android:name=".Splash" android:finishOnTaskLaunch="true" android:launchMode="singleInstance" android:screenOrientation="sensorLandscape" android:configChanges="touchscreen|keyboard|keyboardHidden|navigation|orientation">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
答案 0 :(得分:8)
您需要从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
采取行动。以下是一个示例,通过回复短信Intent
来展示如何打开不包含启动意图过滤器的应用:How to launch an Android app without "android.intent.category.LAUNCHER"
您选择使用哪种意图取决于您 - 只需确保将其添加到AndroidManifest.xml
文件中。
答案 1 :(得分:0)
试试这段代码:
PackageManager p = getPackageManager();
p.setComponentEnabledSetting(getComponentName(),
PackageManager.COMPONENT_ENABLED_STATE_DISABLED,
PackageManager.DONT_KILL_APP);
并检查此link。
希望这会有所帮助。