2015-01-16 203 views
1

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

回答

5

您需要从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"/> 

编辑

为了启动从另一个应用程序上面讨论的应用程序,你不能使用你的问题显示的来电。您正在尝试通过与CATEGORY_LAUNCHER标签(i.addCategory(Intent.CATEGORY_LAUNCHER))创建一个Intent打开应用程序时,您已显式删除以下行从您的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文件。

+0

没有工作,应用程序不能从其他应用程序打开 – cre8ful

+0

你能发布你的整个'AndroidManifest.xml'文件吗?另外,你如何从你的其他应用程序打开这个应用程序? – Willis

+0

加我原来的帖子^^^ – cre8ful

0

的顶部试试这个代码:

PackageManager p = getPackageManager(); 
    p.setComponentEnabledSetting(getComponentName(), 
     PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
     PackageManager.DONT_KILL_APP); 

,并检查该link

希望这有助于。

+1

你知道在哪里添加吗?我是新来的... – cre8ful

相关问题