我在这里遇到了一些问题。我想要做的是从PreferenceActivity中启动一个Activity。所以我的preference.xml保存了首选项布局,如下所示:
<Preference android:title="Launch Activity" >
<intent android:action="org.momo.SOME_ACTIVITY" />
</Preference>
清单知道我想要发起的活动..
<activity android:label="@string/app_name" android:name="SomeActivity">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
<action android:name="org.momo.SOME_ACTIVITY" />
</intent-filter>
</activity>
猜测是什么,当我想启动它时,我得到一个安全例外(Permission Denial)。我错过了什么吗?我对意图的理解仍然有点不完整,但我认为必须以这种方式工作。
感谢您的帮助!
答案 0 :(得分:20)
制作一个意图过滤器似乎是一种略微迂回的方式。这是一种更简单的方法:
<PreferenceScreen
android:title="@string/settings.title"
android:summary="@string/settings.summary">
<intent
android:targetPackage="com.companyname.appname"
android:targetClass="com.companyname.appname.classname"/>
</PreferenceScreen>
答案 1 :(得分:2)
完全工作的例子 在您的preference.xml中
<Preference
android:title="@string/settings_title_notification_silent_mode"
android:summary="@string/settings_title_notification_silent_mode_summary">
<intent
android:action="com.activity.SilentModeList"/> <!-- SilentModeList its activity -->
</Preference>
在manifest.xml中
<activity android:name="com.activity.SilentModeList"
android:label="@string/ac_settings_description">
<intent-filter>
<action android:name="com.activity.SilentModeList" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
答案 2 :(得分:0)
我的情况我所有的xml设置都是正确的。
但由于错误的折射而我发起的活动(名为AppPreferences
)存在于地方:[package].AppPreferences
和[[package].commmon.Preferences
由于import common._
,它将此作为活动,当然它未在Android清单中声明。
我只需要从我的代码中删除第二个活动并vo!