使用隐式意图调用 Main Activity(指定操作和类别)
Calling Main Activity using Implicit Intents (specifying action and category)
我正在尝试使用隐式意图调用 main activity。我在意图中给出了动作和类别,但在启动 activity 之前,android 系统给了我一个 select 的应用程序列表,用于打开 activity.
我用来调用主要 activity 的代码片段如下:
protected void initiateActivity(int requestCode, String value, String oper) {
Intent i = new Intent("android.intent.action.MAIN");
i.addCategory("android.intent.category.LAUNCHER");
i.putExtra("VALUE", value);
i.putExtra("OPER", oper);
startActivityForResult(i, requestCode);
}
在我看来,系统中的每个应用程序都将具有相同的操作、类别组合,因此 android 为我提供了 select 的应用程序列表。我可以对我的 Main Activity 进行哪些更改才能避免出现此问题?
看来您可能需要使用 intent-filters 进行分离。看起来这个 post:
中有一个很好的解释
How can I start MAIN activity with the help of <intent-filter>?
建议添加以下过滤器,否则您将调用启动器:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="stateHidden"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.package.name.MyAction"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>
我正在尝试使用隐式意图调用 main activity。我在意图中给出了动作和类别,但在启动 activity 之前,android 系统给了我一个 select 的应用程序列表,用于打开 activity.
我用来调用主要 activity 的代码片段如下:
protected void initiateActivity(int requestCode, String value, String oper) {
Intent i = new Intent("android.intent.action.MAIN");
i.addCategory("android.intent.category.LAUNCHER");
i.putExtra("VALUE", value);
i.putExtra("OPER", oper);
startActivityForResult(i, requestCode);
}
在我看来,系统中的每个应用程序都将具有相同的操作、类别组合,因此 android 为我提供了 select 的应用程序列表。我可以对我的 Main Activity 进行哪些更改才能避免出现此问题?
看来您可能需要使用 intent-filters 进行分离。看起来这个 post:
中有一个很好的解释How can I start MAIN activity with the help of <intent-filter>?
建议添加以下过滤器,否则您将调用启动器:
<activity android:name=".MyActivity"
android:configChanges="orientation|keyboardHidden"
android:windowSoftInputMode="stateHidden"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="com.package.name.MyAction"/>
<category android:name="android.intent.category.DEFAULT"/>
</intent-filter>