我的清单中有一个具有以下意图的应用程序:
<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>
然后它确实在“应用”中获得了一个图标,但现在我失去了我需要的其他功能 - 例如browsable
和data
问题
如何保留原始意图并在“应用”部分中仍然有应用图标?
答案 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...
}