7

我这里有点问题。我想要做的是从 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 )。我错过了什么吗?我对意图的理解仍然有点不完整,但我认为它必须以这种方式工作。

感谢您的任何帮助!

4

3 回答 3

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>
于 2011-08-01T11:15:17.820 回答
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>
于 2011-10-05T11:45:44.780 回答
0

我的情况是我所有的 xml 设置都是正确的。

但是由于折射不良而我启动的活动(命名为AppPreferences)存在于以下位置:[package].AppPreferences并且[[package].commmon.Preferences 因为一个import common._,它把它作为活动,当然它没有在 Android 清单中声明。我只需要从我的代码中删除第二个活动,瞧!

于 2014-11-19T11:16:49.110 回答