当我在这个主要方面宣布我的主要活动时:
<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>
然后当我使用此代码时出现错误No Activity found to handle Intent { act=com.package.name.MyActivity flg=0x24000000 }
:
Intent intent = new Intent("com.package.name.MyActivity");
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
如果不使用Intent i = new Intent(this, MyActivity.class);
我如何借助action
<intent-filter>
没有帮助:
<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>
代码:
Intent intent = new Intent("com.package.name.VIEW");
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_CLEAR_TOP);
context.startActivity(intent);
答案 0 :(得分:6)
尝试指定两个意图过滤器:
<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);
答案 1 :(得分:1)
name
标记中的action
属性是操作的名称,而不是您的活动名称。删除该行,
<action android:name="com.package.name.MyActivity"/>
由于意图过滤器标记位于您的活动标记下,因此系统已经了解它已应用于该活动。
答案 2 :(得分:0)
您的班级名称不是com.package.name.MyActivity
,而是com.package.name.general.MyActivity
。
避免此错误的一种简单方法是使用类而不是包名创建新的Intent。您可以使用自动完成来填写正确的课程。
您说您不想通过指定类来创建Intent。我想知道为什么不 - 我认为这是一个很好的方式。