2015-12-12 8 views
8

मैं अपने ऐप को एंड्रॉइड 6 के लिए तैयार करने की कोशिश कर रहा हूं और अब मैं उस बिंदु पर फंस गया हूं जहां आपको अनुरोध करने और अनुमतियों की जांच करने की आवश्यकता है।विधि को हल नहीं कर सकता है चेकसल्फ पैरामिशन

int permissionCheck = ContextCompat.checkSelfPermission(thisActivity, Manifest.permission.WRITE_CALENDAR);

समस्या यह है कि एंड्रॉयड स्टूडियो का कहना है Cannot resolve method 'checkSelfPermission' है:

मैं डॉक्स से निम्नलिखित की कोशिश की।

मैंने पहले से ही एपकोम्पेट और समर्थन lib शामिल किया है। ContextCompat एएस के लिए जाना जाता है लेकिन विधि स्वयं ज्ञात नहीं है। मुझे नहीं पता कि मैं क्या गलत कर रहा हूं - एक और परियोजना में मैं इस विधि को लिख सकता हूं और यह पहचाना जाता है।

TargetAPI 23.

किसी को भी एक समाधान पता है क्या है?

+0

क्या यह विधि गतिविधि के अंदर लिखी गई है? या टुकड़ा? या एक उपयोगिता वर्ग? – Manikanta

+0

यह एक गतिविधि के क्रिएट के अंदर है – Phil

उत्तर

12

ओह मेरी ईश्वरीयता - क्या एक बेवकूफ गलती है।

एएस ने जार के रूप में सपोर्टलिब आयात किया और यह जार 2014 की तरह से था। मैंने जारिमपोर्ट को वास्तविक निर्भरता के साथ बदल दिया और पता है कि यह काम कर रहा है।

आपकी मदद लोगों के लिए धन्यवाद!

+0

किसी ऐसे व्यक्ति के लिए जो सचमुच आपकी सटीक स्थिति में है (जहां हर किसी के उत्तर मेरे मामले पर लागू नहीं होंगे), लेकिन वास्तव में यह नहीं समझा है कि आपने इसे कैसे हल किया है, क्या आप कृपया विस्तृत कर सकते हैं? आपने क्या बदल दिया, किसके साथ? आपका अग्रिम में ही बहुत धन्यवाद! –

13
यहाँ

कैसे आप विभिन्न परिदृश्यों में कॉल करने की आवश्यकता है,

गतिविधि के मामले में:

ContextCompat.checkSelfPermission(MyActivity.this, 
     Manifest.permission.WRITE_CALENDAR); 

टुकड़ा के मामले में:

ContextCompat.checkSelfPermission(getActivity(), 
     Manifest.permission.WRITE_CALENDAR); 

किसी भी उपयोगिता वर्ग उपयोग के मामले में संदर्भ:

ContextCompat.checkSelfPermission(context, 
     Manifest.permission.WRITE_CALENDAR); 

अधिक जानकारी के लिए नीचे टिप्पणी

+0

यदि यह क्रिएट() में है तो आप इसका उपयोग कर सकते हैं: ContextCompat.checkSelfPermission (यह, Manifest.permission.WRITE_CALENDAR); – Manikanta

+1

एएस मुझे बताता है कि यह समस्या 'चेकसेल्फप्रमिशन' को नहीं जानता है जो समस्या है। यदि यह मदद करता है: परियोजना ग्रहण से आयात की जाती है। मैंने ऊपर वर्णित दूसरा, जहां मैं अनुमति जांच कर सकता हूं मूल रूप से एएस प्रोजेक्ट – Phil

+1

ठीक है, क्या आप अपना build.gradle पोस्ट कर सकते हैं। – Manikanta

3

लिए Fragment उपयोग getActivity().checkSelfPermission

Activity उपयोग this..checkSelfPermission या बस checkSelfPermission

1
@SuppressLint("NewApi") 

के लिए मैं बस मेरा पेज के शीर्ष पर इस का इस्तेमाल किया और यह मेरे लिए काम करता है ...

0

के रूप में के रूप में मूर्खतापूर्ण शायद यह गलत जगह पर हो सकता है। मुझे भी यही समस्या थी। बोल्ड हिस्सा वह जगह है जहां मैंने मूल रूप से कोड डाला था। इटालिक हिस्सा है जहां इसे

locationListener = new LocationListener() { 
    @Override 
    public void onLocationChanged(Location location) { 
     Log.i("-----------", location.toString()); 
    } 
    **if (ContextCompat.checkSelfPermission(this, 
     Manifest.permission.ACCESS_FINE_LOCATION) != 
      PackageManager.PERMISSION_GRANTED) {'some code'}** 
    }; 'End of LocationListener method 
    *if (ContextCompat.checkSelfPermission(this, 
     Manifest.permission.ACCESS_FINE_LOCATION) != 
     PackageManager.PERMISSION_GRANTED) { 'some code'}* 
+0

हम्म संपादन ने ऐसा नहीं किया जैसा कि उसने कहा था। 'बोल्ड' अनुभाग वास्तव में "**" से घिरा हुआ है, 'इटालिक' अनुभाग "*" से घिरा हुआ है – gavin

संबंधित मुद्दे