Starten Aktivität von Preference Aktivität verursacht Permission Denial Exception
-
21-09-2019 - |
Frage
Ich bin hier ein bisschen ein Problem. Was ich tun möchte, ist eine Aktivität starten aus der PreferenceActivity. Also meine preference.xml, die die Vorliebe Layout sieht wie folgt aus hält:
<Preference android:title="Launch Activity" >
<intent android:action="org.momo.SOME_ACTIVITY" />
</Preference>
Das Manifest ist sich der Aktivität I gestartet werden soll ..
<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>
erraten, was, ich bin eine Sicherheitsausnahme bekommen (Permission Denial), wenn ich es starten möchten. Bin ich etwas fehlt? Mein Verständnis von Absichten ist noch etwas unvollständig, aber ich dachte, dass es muss Arbeit auf diese Weise.
Vielen Dank für jede Hilfe!
Lösung
scheint eine Intent-Filter zu machen wie eine etwas Umwegen, dies zu tun. Dies ist ein einfacher Ansatz:
<PreferenceScreen
android:title="@string/settings.title"
android:summary="@string/settings.summary">
<intent
android:targetPackage="com.companyname.appname"
android:targetClass="com.companyname.appname.classname"/>
</PreferenceScreen>
Andere Tipps
Vollarbeits Beispiel In Ihrem 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>
In Ihrem 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>
ich meinen Fall all meine XML-Einstellungen korrekt waren.
Aber die Aktivität I (genannt AppPreferences
) ins Leben gerufen wegen schlechten refractoring gab es in zu Orten: [package].AppPreferences
und [[package].commmon.Preferences
Wegen einer import common._
wurde dies als die Aktivität zu nehmen und natürlich war es nicht im Android Manifest erklärt.
Ich habe gerade die zweite Aktivität von meinem Code und voilà löschen!