从首选项屏幕启动活动(在xml文件中定义的意图)

Luk*_*kap 13 android android-preferences android-intent android-activity

在我的偏好文件中,我去了

    <PreferenceCategory android:title="Title" >
        <Preference android:title="title" >
    <intent android:action="com.my.package.MainActivity" 
            />
</Preference>
    </PreferenceCategory>
Run Code Online (Sandbox Code Playgroud)

活动是在清单文件中创建的,但我仍然可以

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.my.package.MainActivity }
Run Code Online (Sandbox Code Playgroud)

如何从首选项屏幕启动活动?

Meh*_*nai 30

我有同样的问题,但我在stackoverflow上搜索的解决方案都没有解决我的activitynotfound Exception.

这是我从这里找到的工作解决方案:

    <PreferenceScreen  
                android:title="@string/title_intent_preference"  
                android:summary="@string/summary_intent_preference">  

            <intent android:action="your.action.string"/>  

 </PreferenceScreen>  
Run Code Online (Sandbox Code Playgroud)

在manifest.xml中的活动中设置一个intent过滤器

    <activity ...>  
            <intent-filter>  
                <action android:name="your.action.string"/>  
                <category android:name="android.intent.category.DEFAULT" />  
            </intent-filter>  
</activity>
Run Code Online (Sandbox Code Playgroud)


liu*_*eia 5

这不是从xml启动intent的正确方法.该android:action字段不是您尝试启动的活动的名称; 它描述了另一个活动可以提供的意图过滤器(例如android.intent.action.VIEWandroid.intent.action.EDIT)的操作.

有关正确使用<intent>,android:action等的信息,请参阅此答案:https://stackoverflow.com/a/3751306/582004

确保在您的AndroidManifest.xml中,您的活动包含一个<intent-filter> <action您在PreferenceActivity中请求的>(在引用的答案中,这是android.intent.action.VIEW).


Pri*_*tel 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>
Run Code Online (Sandbox Code Playgroud)

另外,尝试使用PreferenceScreen:

<PreferenceScreen android:title="@string/my_location_settings">
    <intent android:action="example.action.ACTION_MAIN_ACTIVITY">
    </intent>
</PreferenceScreen>
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请参阅此链接... 从preferences.xml开始活动


tar*_*203 5

尝试这个

 <intent android:targetPackage="your.package"
 android:targetClass="your.package.yourMainClassName"/>
Run Code Online (Sandbox Code Playgroud)