Запуск действия из предпочтения вызывает исключение отказа в разрешении

StackOverflow https://stackoverflow.com/questions/2077436

Вопрос

У меня тут небольшая проблема.Что я хочу сделать, так это запустить 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>

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

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

Это было полезно?

Решение

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

<PreferenceScreen
    android:title="@string/settings.title" 
    android:summary="@string/settings.summary">
    <intent
        android:targetPackage="com.companyname.appname"
        android:targetClass="com.companyname.appname.classname"/>
</PreferenceScreen>

Другие советы

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

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

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top