从首选项活动启动活动会导致权限拒绝异常

时间:2010-01-16 13:21:55

标签: android android-activity preference

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

感谢您的帮助!

3 个答案:

答案 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!