使用隐式意图调用主要活动(指定操作和类别)

时间:2015-02-18 18:31:02

标签: android android-intent android-implicit-intent

我尝试使用隐式意图调用主要活动。我在意图中给出了动作和类别,但在开始活动之前,android系统为我提供了一个可供选择的应用程序列表,用于打开活动。

我用来调用主要活动的代码片段如下:

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给了我可供选择的应用程序列表。我可以对主要活动进行哪些更改,以便不会出现此问题?

1 个答案:

答案 0 :(得分:0)

看起来您可能需要使用intent-filters分开。看起来这篇文章有一个很好的解释:

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>