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

在我的偏好文件中,我去这个

<PreferenceCategory android:title="Title" > <Preference android:title="title" > <intent android:action="com.my.package.MainActivity" /> </Preference> </PreferenceCategory> 

该活动在清单文件中创build,但我仍然得到

 android.content.ActivityNotFoundException: No Activity found to handle Intent { act=com.my.package.MainActivity } 

我如何从首选项屏幕开始活动?

  • 代码中的SwitchPreference和CheckBoxPreference
  • 是否可以在Android上向SharedPreferences添加一个数组或对象
  • 如何动态显示和隐藏Android上的首选项?
  • 如何使用膨胀布局访问自定义DialogPreference中的小部件?
  • Android偏好的默认值
  • 从首选项XML文件启动位置设置意图
  • 如何将工具栏添加到AppCompatPreferenceActivity?
  • 自定义首选项类别标题
  • 我有同样的问题,但没有我在stackoverflowsearch解决scheme解决了我的activitynotfoundexception。

    这里是我从这里find的工作解决scheme:

      <PreferenceScreen android:title="@string/title_intent_preference" android:summary="@string/summary_intent_preference"> <intent android:action="your.action.string"/> </PreferenceScreen> 

    在manifest.xml中的活动中设置一个意图filter

      <activity ...> <intent-filter> <action android:name="your.action.string"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> 

    在你的清单中:

    这是您的活动定义称为[您的包] .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> 

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

    这不是从XML开始意图的正确方法。 “android:action”字段不是要尝试启动的活动的名称; 它描述了另一个活动可以提供的意图filter(例如android.intent.action.VIEW或android.intent.action.EDIT)的操作。

    看到这个答案正确使用<intent >,android:action等: https : //stackoverflow.com/a/3751306/582004

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

    尝试这个

      <intent android:targetPackage="your.package" android:targetClass="your.package.yourMainClassName"/>