如何从启动器隐藏Android应用程序

时间:2015-01-16 18:54:25

标签: android

我想从启动器隐藏我的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>                

2 个答案:

答案 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

希望这会有所帮助。