android Manifest.permission.ACCESS_FINE_LOCATION को हल नहीं कर सकता




service permissions (12)

मेरे प्रकट फ़ाइल में अनुमतियाँ जोड़ते समय, नीचे xml काम करता है।

 <permission android:name="android.permission.ACCESS_FINE_LOCATION" />

हालाँकि, यह xml काम नहीं करता है।

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

मैं कौन सा उपयोग करने वाला हूं? यदि यह पहला है, तो यह काम क्यों नहीं करेगा? मेरे द्वारा यह कैसे किया जा सकता है?

इसके अलावा, मुझे एंड्रॉइड 6.0 रनटाइम अनुमतियां संबंधित अपवाद मिल रही हैं:

java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.

जब मैं अनुमति की जांच करने के लिए स्ट्रिंग सरणी में अनुमति जोड़ने का प्रयास करता हूं, तो एंड्रॉइड स्टूडियो मुझे बताता है कि यह नीचे दिए गए कोड में Manifest.permission को हल नहीं कर सकता है:

new String[]{Manifest.permission.ACCESS_FINE_LOCATION}

ऐसा क्यों कर रही होगी? मेरे द्वारा यह कैसे किया जा सकता है?

https://code.i-harness.com


इसे इस्तेमाल करे! निम्नलिखित पैकेज में उपलब्ध ACCESS_FINE_LOCATION के बाद से जोड़ें:

import android.Manifest;


इसे इस्तेमाल करे:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
        ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_SELECT_PICTURE);
        return;
    }

इसे बदलो

Manifest.permission.ACCESS_FINE_LOCATION

इस मामले में

android.Manifest.permission.ACCESS_FINE_LOCATION


जब आप "मेनिफेस्ट" टाइप करते हैं, तो एंड्रॉइड स्टूडियो को आपको मेनिफेस्ट के कुछ विकल्प चुनने का सुझाव देना चाहिए। आपको अपने प्रोजेक्ट के नाम के बजाय वन स्टार्ट एंड्रॉयड चुनना चाहिए।

यदि आप मेनिफेस्ट.जावा के संदर्भ को एक्सेस करते हैं और आप पा सकते हैं कि "अनुमति" वर्ग में केवल 1-2 लाइनें हैं, तो आप गलत मैनिफ़ेस्ट क्लास का संदर्भ दे रहे हैं।


दौड़ने से पहले यह कोशिश करें, सुनिश्चित करें कि आपके पास पहुंचने की अनुमति है।

try {
    location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
   dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}

परिवर्तन

new String[]{Manifest.permission.ACCESS_FINE_LOCATION}

इसके लिए

new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}

आपकी समस्या का समाधान किया जाएगा।


पहले भाग के लिए, आपको Android Devlopers साइट के अनुसार <uses-permission> उपयोग करना चाहिए। यह सुनिश्चित करने का प्रयास करें कि आप अपनी अनुमतियों को सीधे <manifest> टैग के तहत घोषित करते हैं, अपने <application> टैग में नहीं। यह जानना मुश्किल है कि आपकी संपूर्ण प्रकट फ़ाइल देखे बिना आपकी समस्या क्या है। अपने प्रकट में अनुमतियों की घोषणा करने के तरीके के बारे में अधिक जानकारी के लिए मैंने ऊपर दिए गए लिंक को देखें।

आपकी रनटाइम अनुमतियों की समस्या के संबंध में:

उपयोग-अनुमतियों के साथ यह निर्धारित नहीं किया जा सकता है कि ..

नई स्ट्रिंग [] {मैनिफेस्ट.परमीशन ।ACCESS_FINE_LOCATION}

क्यूं कर?

सुनिश्चित करें कि आप my.app.package.Manifest बजाय android.Manifest का उपयोग कर रहे हैं। बहुत बार एंड्रॉइड स्टूडियो पूर्व की बजाय बाद के लिए डिफ़ॉल्ट होगा।

तो, आपकी नई लाइन कोड की तरह दिखाई देगी:

new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION};

संपादित करें: मैंने अपना उत्तर सुधार लिया।

संपादन 2: android.Manifest आयात करने से सावधान रहें। यह समस्याएँ पैदा कर सकता है यदि आप my.app.package.Manifest आयात कर रहे हैं। उस import android.Manifest अलावा अन्य import android.Manifest इस समस्या को हल करने का एक और वैध तरीका है।


मुझे एक समान समस्या थी जहां इस्तेमाल किया गया था;

ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED 

जहां यह प्रतीक READ_CONTACTS हल नहीं कर सका।

हालाँकि उपयोग करने पर;

import android.Manifest;

इसने READ_CONTACT को पहचानना शुरू किया


यदि आप डायनामिक अनुमतियों और किसी भी अनुमति जैसे कि ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION देने में त्रुटि कर रहे हैं, तो "PERMISSION_NAME विधि को हल नहीं कर सकता है" इस मामले में आप अनुमति नाम के साथ कोड लिखते हैं और फिर अपनी परियोजना का पुनर्निर्माण करते हैं यह प्रकट हो जाएगा (Manifest.permission) फ़ाइल


यदि आपके पास पहले से ही अपनी मैनिफ़ेस्ट फ़ाइल में सही ढंग से use.permissions setup है, जैसा कि पहले से ही hnilsen द्वारा बताया गया है, तो बस अपनी लाइन बदलें:

 Manifest.permission.ACCESS_FINE_LOCATION

इस एक द्वारा:

 android.Manifest.permission.ACCESS_FINE_LOCATION

इससे आपकी समस्या दूर हो सकती है।


new String[]{Manifest.permission.ACCESS_FINE_LOCATION}

इसे बदलो

android.manifest.permission.ACCESS_FINE_LOCATION

 if (Build.VERSION.SDK_INT >= 23) {

            if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
                    || checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {

                mapView.setMyLocationEnabled(true); 
            }
        }
        else
        {
            mapView.setMyLocationEnabled(true);

        }




manifest