starten einer activity aus preferences.xml
Ich versuche zu gehen, um den Einstellungen-Bildschirm-gefunden bei -
android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS
Vom Eintrag in meine Einstellungen-Aktivität, aber habe kein Glück. Im moment drücken, wird der Eintrag nur aktualisiert den gleichen Bildschirm wie ich war.
Meine preferences.xml sieht wie folgt aus:
<Preference
android:title="@string/my_location_settings">
<intent android:action="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS">
</intent>
</Preference>
Und mein manifest-Eintrag sieht wie folgt aus:
<activity android:name=".Preferences">
<intent-filter>
<action android:name="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
Was mache ich falsch?
logcat:
12-11 15:53:34.170: INFO/ActivityManager(173): Starting activity: Intent { act=android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS cmp=com.my.app/.Preferences }
12-11 15:53:34.400: INFO/ActivityManager(173): Displayed activity com.my.app/.Preferences: 229 ms (total 229 ms)
Manifest:
<?xml version="1.0" encoding="utf-8"?>
<activity android:name=".ViewActivity" android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".MyPageOneActivity">
</activity>
<activity android:name=".MyPageTwoActivity">
</activity>
<activity android:name=".MyPageThreeActivity">
</activity>
<activity android:name=".Preferences">
<intent-filter>
<action android:name="com.my.app.PREFERENCES" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
</application>
<uses-sdk android:minSdkVersion="4" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE">
</uses-permission>
</manifest>
Preferences.java (
sorry für die fehlende Formatierung):
package com.my.app;
import android.os.Bundle;
import android.preference.PreferenceActivity;
public class Preferences extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
und preferences.xml:
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference
android:title="Address 1"
android:key="customURLOne"
android:summary="Enter a new address for 1">
</EditTextPreference>
<EditTextPreference
android:title="Address 2"
android:key="customURLTwo"
android:summary="Enter a new address for 2">
</EditTextPreference>
<EditTextPreference
android:title="Address 3"
android:key="customURLThree"
android:summary="Enter a new address for 3">
</EditTextPreference>
<Preference android:title="@string/my_location_settings">
<intent android:action="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS">
</intent>
</Preference>
- Was bedeutet das logcat sagen? Außerdem kannst du die manifest-Eintrag für die Haupt-Einstellungsseite? Die eine, die Sie immer wieder auf?
- Das ist die manifest-Eintrag für meine wichtigsten Einstellungen, die logcat:
- 12-11 15:53:34.170: INFO/ActivityManager(173): Start Aktivität: Intent { act=android.Anbieter.Einstellungen.ACTION_LOCATION_SOURCE_SETTINGS cmp=com.meine.app/.Einstellungen } 12-11 15:53:34.400: INFO/ActivityManager(173): Eingeblendete Aktivität com.meine.app/.Vorlieben: 229 ms (insgesamt 229 ms)
- Ich verstehe immer noch nicht den manifest-Eintrag für die Hauptseite, nur für die, die Sie versuchen zu erreichen.
- oh sorry, der eine Im, der versucht, zu bekommen ist Teil des android-os, ich bekomme auch über eine alert-box durch die Verwendung der Anweisungen: Vorsatz myLocationOptionsIntent = new Intent( android.Anbieter.Einstellungen.ACTION_LOCATION_SOURCE_SETTINGS); startActivity(myLocationOptionsIntent); Dies bringt Sie die Standorte & Sicherheits-Einstellungen unter Android-Einstellungen-Liste
- Ich verstehe es nicht. Ihren Vorlieben Absichten sagt ACTION_LOCATION_SOURCE_SETTINGS, so deutlich Sie versuchen, starten Sie den Vorgang ".Einstellungen".
- Richtig, ich glaube, ich bin immer verwirrt. Ich möchte, um die Liste der Einstellungen für Standorte & security, denselben, gebracht durch den code in den Kommentar oberhalb. Die .Vorlieben Aktivität startet gut, dann will ich gehen, um die Standorte und die Sicherheitseinstellungen aus einem Eintrag in der Liste. Dies ist, wo es wieder zu dem gleichen Bildschirm.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay, ich glaube, ich verstehe - Sie kann unklar sein, was ein intent-filter ist.
Ihre manifest-Eintrag sagt:
Dies ist die definition, die für Ihre Aktivität genannt [Ihr Paketname].Vorlieben.
Einstellungen ausgelöst wird, wenn jemand beginnt ein Vorsatz mit ACTION_LOCATION_SOURCE_SETTINGS wie der name der Aktion...
Dies ist eigentlich die Standard-option für diese Aktion.
Natürlich, Sie don 'T wollen, verwenden Sie ein Android-API-Aktion Namen für Ihre Aktivität (es sei denn, Sie versuchen, eine alternative zu Android' s built-in Lage-source-Aktivität). Verwenden Sie einen anderen Namen für die Aktion ein, die für Ihre Haupt-Bildschirm "Einstellungen", vorzugsweise etwas mit Ihrem Paket-Namen.
EDIT: Außerdem, versuchen Sie es mit einem PreferenceScreen:
Nichts funktioniert für mich, so habe ich getan: (ich denke, es ist eine schlechte Idee, aber...)
1.Entfernen Sie diesen filter aus manifest
1. Machen Vorliebe leichter
2. Hinzufügen Clicklistener in Ihrem PreferenceFragment
P. S. Sorry für mein Englisch