Активность запуска из действия предпочтения вызывает исключение отказа в разрешении - PullRequest
7 голосов
/ 16 января 2010

У меня тут небольшая проблема. Я хочу запустить Activity из PreferenceActivity. Так что мой 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>

угадайте, что я получаю исключение безопасности (отказ в разрешении), когда я хочу его запустить. Я что-то пропустил? Мое понимание намерений все еще немного неполно, но я подумал, что оно должно работать таким образом.

Спасибо за любую помощь!

Ответы [ 3 ]

20 голосов
/ 01 августа 2011

Создание фильтра намерений кажется немного обходным способом сделать это.Это более простой подход:

<PreferenceScreen
    android:title="@string/settings.title" 
    android:summary="@string/settings.summary">
    <intent
        android:targetPackage="com.companyname.appname"
        android:targetClass="com.companyname.appname.classname"/>
</PreferenceScreen>
2 голосов
/ 05 октября 2011

Полностью пример работы В вашем предпочтении.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>

В вашем манифесте. 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>
0 голосов
/ 19 ноября 2014

В моем случае все мои настройки XML были правильными.

Но действие, которое я начал (названный AppPreferences) из-за плохого рефракторинга, существовало в местах: [package].AppPreferences и [[package].commmon.Preferences Из-за import common._ он воспринимал это как действие и, конечно, он не был объявлен в манифесте Android. Мне просто нужно было удалить второе действие из моего кода и вуаля!

...