应用程序未在模拟器中的“应用程序”中显示

时间:2014-01-09 19:20:16

标签: android android-intent android-browser

我的清单中有一个具有以下意图的应用程序:

    <activity
        android:name=".ui.ui.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:host="myapp.com" android:scheme="http" />
        </intent-filter>
    </activity>

当我从IDE运行应用程序时,它会显示在模拟器上。但是,它在“Apps”中没有图标。因此,如果我需要再次启动它,我必须从我的IDE再次运行该应用程序。

如果我将意图更改为:

    <activity
        android:name=".ui.ui.MainActivity"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN">
            <category android:name="android.intent.category.LAUNCHER">
        </intent-filter>
    </activity>

然后它确实在“应用”中获得了一个图标,但现在我失去了我需要的其他功能 - 例如browsabledata

问题

如何保留原始意图并在“应用”部分中仍然有应用图标?

1 个答案:

答案 0 :(得分:0)

您应该将不同的操作拆分为自己的过滤器。

<activity
    android:name=".ui.ui.MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    <intent-filter>
        <action android:name="android.intent.action.VIEW" />
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.BROWSABLE" />
        <data android:host="myapp.com" android:scheme="http" />
    </intent-filter>
</activity>

在您的活动中,您可以对不同的操作做出不同的反应。

Intent intent = getIntent();
// To get the action of the intent use
String action = intent.getAction();
if (action.equals(Intent.ACTION_VIEW)) {
  //Do something
} else if(action.equals(Intent.ACTION_MAIN) {
  //Do something else...
}