Android 如何在<;的帮助下开始主要活动;意向过滤器>;?

Android 如何在<;的帮助下开始主要活动;意向过滤器>;?,android,intentfilter,Android,Intentfilter,当我在本手册中声明我的主要活动时: <activity android:name=".MyActivity" android:configChanges="orientation|keyboardHidden" android:windowSoftInputMode="stateHidden" android:screenOrientation="portrait"> <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"/>
          <action android:name="com.package.name.MyActivity"/>
          <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>
如果不使用
Intent i=newintent(this,MyActivity.class)如何在

没有帮助:

 <intent-filter>
      <action android:name="android.intent.action.MAIN"/>
      <action android:name="com.package.name.VIEW"/>
      <category android:name="android.intent.category.LAUNCHER" />
 </intent-filter>

action
标记中的
name
属性是操作的名称,而不是活动的名称。拆下线路

  <action android:name="com.package.name.MyActivity"/>


由于intent filter标记位于活动的标记下,系统已经知道它已应用于该活动。

您的类名不是
com.package.name.MyActivity
,而是
com.package.name.general.MyActivity

避免此错误的一个简单方法是使用类而不是包名创建新的意图。您可以使用“自动完成”来填充正确的类


您说您不想通过指定类来创建意图。我想知道为什么不--我认为这是一个很好的方法。

尝试指定两个意图过滤器:

<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>
</activity>
或类名:

Intent intent = new Intent(context, MyActivity.class);
context.startActivity(intent);

创建自定义“操作”,如
com.package.name.action\u视图
,并按照Jeffery Blatman的建议,删除
com.package.name.MyActivity的“操作”。然后,您只需使用自定义操作启动
活动
。我已更改了代码,但它对我没有帮助。我在哪里做的​​一个错误?所以我有两行
。我必须用java代码写什么?你不需要用java写任何东西。该意图过滤器将显示链接到该活动的启动器图标。
intent intent=new intent(“com.package.name.MyAction”);背景。开始触觉(意图)没有帮助(未找到可处理意图的活动):(使用类名工作,但我想使用actionname@Svyatoslav:我很有信心这里给出的答案是正确的,并且您没有正确地实现解决方案。@Commonware我发现当第二个
包含其他内容时,它通过使用动作名称工作。@Svyatoslav:啊,是的,我很抱歉。
startActivity()
如果没有指定其他类别,则总是将
类别\u默认值
添加到
意图
中。因此,
始终需要
,无论是
默认值
还是其他内容。请编辑回答以添加默认类别。很抱歉忘记了这一点。
<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>
</activity>
Intent intent = new Intent("com.package.name.MyAction");
context.startActivity(intent);
Intent intent = new Intent(context, MyActivity.class);
context.startActivity(intent);