从个人偏好屏幕(在XML文件中定义的意图)活动启动(Start Activity from pref

2019-07-19 17:26发布

在我的首选项文件我走这

    <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 }

我如何开始从喜好屏幕活动?

Answer 1:

我有同样的问题,但没有解决方案我搜索了计算器的解决了我activitynotfound例外。

这里是工作的解决方案,我从发现这里 :

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

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

 </PreferenceScreen>  

在里面的manifest.xml您的活动设置意图过滤器

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


Answer 2:

在您的清单:

这是你的活动叫[你的包] .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活动



Answer 3:

这并不是开始从XML意图的正确途径。 该android:action领域是不适合你正在试图启动活动的名称; 它描述了一种用于意图滤波器的动作(如android.intent.action.VIEWandroid.intent.action.EDIT )指另一活性可以供应。

看到这个答案的正确使用的<intent >,安卓动作等: https://stackoverflow.com/a/3751306/582004

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



Answer 4:

试试这个

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


Answer 5:

你应该做这样的事情在首XML中你的意图的声明:

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


文章来源: Start Activity from preference screen (intent defined in xml file)