在我的偏好文件中,我去了
<PreferenceCategory android:title="Title" >
<Preference android:title="title" >
<intent android:action="com.my.package.MainActivity"
/>
</Preference>
</PreferenceCategory>
活动是在清单文件中创建的,但我仍然得到
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.my.package.MainActivity }
如何从偏好设置屏幕启动活动?
答案 0 :(得分:30)
我遇到了同样的问题,但我在stackoverflow上搜索的解决方案都没有解决我的activity notfound Exception。
以下是我从here找到的工作解决方案:
<PreferenceScreen
android:title="@string/title_intent_preference"
android:summary="@string/summary_intent_preference">
<intent android:action="your.action.string"/>
</PreferenceScreen>
在manifest.xml
中的活动中设置一个intent过滤器 <activity ...>
<intent-filter>
<action android:name="your.action.string"/>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 1 :(得分:5)
这不是从xml启动intent的正确方法。 android:action
字段不适用于您尝试启动的活动的名称;它描述了另一个活动可以提供的意图过滤器(例如android.intent.action.VIEW
或android.intent.action.EDIT
)的操作。
有关正确使用<intent
&gt;,android:action等的信息,请参阅此答案:https://stackoverflow.com/a/3751306/582004
确保您的AndroidManifest.xml中的活动包含<intent-filter
&gt;使用<action
&gt;您在PreferenceActivity中请求的内容(在引用的答案中,这是android.intent.action.VIEW
)。
答案 2 :(得分:5)
在你的清单中:
这是您的活动的定义,名为[您的包裹] .MainActivity。
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="example.action.ACTION_MAIN_ACTIVITY" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
另外,请尝试使用PreferenceScreen:
<PreferenceScreen android:title="@string/my_location_settings">
<intent android:action="example.action.ACTION_MAIN_ACTIVITY">
</intent>
</PreferenceScreen>
有关详细信息,请参阅此链接... starting an activity from preferences.xml
答案 3 :(得分:4)
试试这个
<intent android:targetPackage="your.package"
android:targetClass="your.package.yourMainClassName"/>
答案 4 :(得分:2)
您应该在首选项xml:
中的intent声明中执行类似的操作<intent android:targetPackage="abc.def.efg"
android:targetClass="abc.def.efg.hig.yourClassName"/>
注意: targetPackage
应与package
manifest
标记内声明的AndroidManifest.xml
属性相同。这有时令人困惑,所以再读一遍。
所以等效的AndroidManifest.xml
会声明如下:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="abc.def.efg">
<application>
....
<activity android:name=".hig.yourClassName"/>
</application>
</manifest>
答案 5 :(得分:0)
要从首选项屏幕开始活动,您只需修改您的首选项XML,例如
<Preference
app:key="your_key"
app:title="@string/title"
app:summary="@string/summary">
<intent
android:targetPackage="your.package"
android:targetClass="your.package.ActivityClass"/>
</Preference>
或者,如果您需要传递动作,只需将动作字符串放入intent属性之类的
<Preference
app:key="your_key"
app:title="@string/title"
app:summary="@string/summary">
<intent
android:targetPackage="your.package"
android:targetClass="your.package.ActivityClass"
android:action="your.package.ACTION"/>
</Preference>