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);