2010-12-11 8 views
7

मैं सेटिंग पर जाना कोशिश कर रहा हूँ से एक गतिविधि शुरू करने पर पाया स्क्रीन। फिलहाल, एंट्री दबाकर मैं उसी स्क्रीन को रीफ्रेश करता हूं जैसा मैं चालू था।preferences.xml

मेरे preferences.xml इस तरह दिखता है:

<Preference 
     android:title="@string/my_location_settings"> 
    <intent android:action="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS"> 
    </intent> 
</Preference> 

और मेरे प्रकट प्रविष्टि इस प्रकार है:

<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> 

क्या मैं गलत कर रहा हूँ?

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) 

मैनिफ़ेस्ट:

<?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 ( स्वरूपण की कमी के बारे में खेद):

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); 
    } 
} 

और 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> 

+0

लॉगकैट क्या कहता है? साथ ही, क्या आप अपने मुख्य प्राथमिकता पृष्ठ के लिए मैनिफेस्ट प्रविष्टि पोस्ट कर सकते हैं? वह जिसे आप वापस लेते रहते हैं? – EboMike

+0

अपने मुख्य प्राथमिकताएं पृष्ठ के लिए प्रकट प्रविष्टि, logcat है: – qubz

+0

12-11 15: 53: 34.170: जानकारी/ActivityManager (173): शुरू गतिविधि: आशय {कार्य = android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS सीएमपी = कॉम। my.app/.Preferences} 12-11 15: 53: 34.400: INFO/ActivityManager (173): प्रदर्शित गतिविधि com.my.app/. संदर्भ: 22 9 एमएस (कुल 22 9 एमएस) – qubz

उत्तर

10

ठीक है, मुझे लगता है कि मैं समझता हूँ - तुम क्या एक आशय-फिल्टर है के बारे में स्पष्ट नहीं हो सकता है।

आपका प्रकट प्रविष्टि का कहना है:

<activity android:name=".Preferences"> 

यह अपनी गतिविधि [अपने पैकेज] .Preferences कहा जाता है के लिए परिभाषा है।

<intent-filter> 
    <action android:name="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS" /> 

पसंद ट्रिगर किया जाएगा जब भी किसी कार्रवाई नाम के रूप ACTION_LOCATION_SOURCE_SETTINGS के साथ एक आशय शुरू होता है ...

 <category android:name="android.intent.category.DEFAULT" /> 

यह है कि कार्रवाई के लिए डिफ़ॉल्ट विकल्प माना जाता है।

</intent-filter> 
</activity> 

जाहिर है, आप (जब तक आप के लिए एक विकल्प प्रदान करने के लिए कोशिश कर रहे हैं एंड्रॉयड के अंतर्निहित स्थान स्रोत गतिविधि) अपनी गतिविधि के लिए एक Android एपीआई कार्रवाई नाम का उपयोग नहीं करना चाहते हैं। अपनी मुख्य प्राथमिकता स्क्रीन के लिए एक अलग क्रिया नाम का उपयोग करें, अधिमानतः इसमें आपके पैकेज नाम के साथ कुछ।

संपादित करें: (मुझे लगता है कि यह एक बुरा विचार है, लेकिन ...)

1: इसके अलावा, एक PreferenceScreen प्रयोग करके देखें: तो मैं था

<PreferenceScreen android:title="@string/my_location_settings"> 
    <intent android:action="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS"> 
    </intent> 
</PreferenceScreen> 
+0

अच्छा लगता है, आपका अधिकार, मैं इरादा फ़िल्टर के बारे में अस्पष्ट था धन्यवाद। मैं इसे एक शॉट दूंगा और देखें कि यह कैसे – qubz

+0

शुभकामनाएं देता है! मुझे बताएं कि यह कैसे काम करता है! – EboMike

+0

मुझे अभी भी कोई भाग्य नहीं है क्योंकि मुझे लगता है कि मैं वास्तव में नहीं जानता कि मैं क्या कर रहा हूं। क्या आप कह रहे हैं कि मैं मैनिफेस्ट और प्राथमिकताओं.एक्सएमएल फ़ाइल में एक्शन नेम बदलता हूं? यदि मैं ऐसा करता हूं, तो मैं वांछित स्थान स्रोत गतिविधि कैसे शुरू करूं? – qubz

1

मुझे कुछ नहीं के लिए काम करता है।प्रकट

<intent-filter> 
<action android:name="android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS" /> 
<category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 

1. मेक वरीयता आसान से यह फ़िल्टर निकालना

<Preference android:key="simple_key" 
     android:title="@string/title_simple_key"> 
    </Preference> 

2. अपने PreferenceFragment

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    addPreferencesFromResource(R.layout.preferences); 
    // Load the preferences from an XML resource 
    findPreference("simple_key").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() { 
     @Override 
     public boolean onPreferenceClick(Preference preference) { 
      startActivity(new Intent(
        android.provider.Settings.ACTION_LOCATION_SOURCE_SETTINGS)); 
      return false; 
     } 
    }); 

} 

पी.एस. में Clicklistener जोड़े क्षमा करें मेरे अंग्रेजी

+0

मैं पता नहीं क्यों, लेकिन गतिविधि है कि मैं घोषणा करने के बजाय अन्य विधि के साथ, यह वरीयताओं गतिविधि फिर से खोला, तो इस विधि मुझे (के लिए काम किया: – FeanDoe