दिलचस्प पोस्ट
कैसे, यदि बिल्कुल, Erlang प्रक्रियाओं को कर्नेल थ्रेड्स के लिए मानचित्र करते हैं? UIViewController पर UIViewController पेश करने का प्रयास करना, जिसका दृश्य विंडो पदानुक्रम में नहीं है पर्ल में, क्या समानता के लिए दो सरणियों की तुलना करने के लिए एक बनाया गया है? जावा के साथ फ़ाइल अपलोड करें (प्रगति बार के साथ) एएसपी.नेट एमवीसी में अलग-अलग विधानसभाओं में दृश्य numpy: सूचकांक arrays के साथ कुशलता से संक्षेप लिनक्स ओओएम किलर द्वारा किस प्रक्रिया को मार डाला गया? मैं पायथन में स्पष्ट रूप से मेमोरी कैसे मुक्त कर सकता हूं? मैं Nokogiri के साथ एक HTML तालिका कैसे पार्स है? प्रतिबिंब का उपयोग करके चर नाम कैसे प्राप्त करें? सी बाइनरी स्टडिन पढ़ें android.intent.action.SCREEN_ON एक रिसीवर आशय फिल्टर के रूप में काम नहीं करता है Std :: __ cxx11 :: स्ट्रिंग को std :: string को परिवर्तित करना स्ट्रिंग में PHP कोड निष्पादित करें Google मानचित्र एपीआई की दूसरी सीमा तक की सीमित सीमाएं

Android Marshmallow में किसी सेवा से अनुमतियों का अनुरोध कैसे करें

एंड्रॉइड मार्शमॉलो में, एप स्थापित होने पर एक बार सभी के बजाय, आवश्यक होने पर रनटाइम पर अनुमतियों का अनुरोध किया जाना चाहिए। हालांकि, मैं केवल एक गतिविधि से अनुमतियों का अनुरोध कर सकता हूं, जो एक समस्या है क्योंकि मेरे ऐप में केवल सेवाएं शामिल हैं I (ऐसा क्यों है, आप पूछ सकते हैं? ऐप के पास एक एंड्रॉइड Wear घड़ी वाला चेहरा है, और सभी फोन घड़ी को भेजने के लिए नज़दीकी तस्वीरों को देखता है – कोई भी गतिविधि आवश्यक नहीं है, लेकिन इसके लिए स्थान अनुमति की आवश्यकता होती है।)

इसलिए, क्या किसी सेवा से अनुमतियों का अनुरोध करने का कोई तरीका है? या किसी भी तरह पूर्व के रूप में स्थापित समय पर अनुमति देने के लिए मजबूर?

Solutions Collecting From Web of "Android Marshmallow में किसी सेवा से अनुमतियों का अनुरोध कैसे करें"

requestPermission() केवल एक Activity से कहा जा सकता है और एक Service नहीं (जांच के विपरीत checkPermission() जो केवल PackageManager आवश्यकता है) तो आपको उस के आसपास आने के लिए कुछ अतिरिक्त कार्य करने की आवश्यकता है; आपको अपने ऐप में एक Activity प्रदान करने की ज़रूरत है, उदाहरण के लिए, आपकी Service अनुमति के लिए इसकी जांच हो सकती है और अगर उन्हें अभी तक नहीं दिया गया है, तो यह एक सूचना बना सकता है और यह उपयोगकर्ता को एक संक्षिप्त संदेश के साथ सूचित क्यों कर सकता है एक अधिसूचना है और जब उन्हें अधिसूचना आदि पर क्लिक किया जाता है तो क्या होना चाहिए।

मैं सहमत हूं, सेवाओं के लिए यह बहुत परेशानी है, मुझे लगता है कि आपको इसके लिए एंड्रॉइड डेवलपर पूर्वावलोकन पृष्ठ पर एक समस्या की रिपोर्ट करनी चाहिए।

इस समय, मुझे लगता है कि सबसे अच्छा समाधान सेवा पर अनुमति के लिए जांच करना है, और यदि अनुमति अनुपलब्ध है तो सूचनाएं दिखाएं। इससे भी बेहतर, अनुमति के लिए अनुरोध करने के लिए डायलॉग एक्टिविटी बनाएं जब उपयोगकर्ता सूचना पर प्रेस करेंगे।

अनुमति पर नजर डालें हर जगह पुस्तकालय यह आपको किसी भी संदर्भ से अनुमति का अनुरोध करने की अनुमति देता है।

यह एक अधिसूचना तैयार करता है जिस पर यह अनुमति के लिए पूछे जाने वाले गतिविधि को खोलता है।

पुस्तकालय के जिथूब पृष्ठ से नमूना कोड: –

 @Override protected Boolean doInBackground(Void... params) { PermissionResponse response = PermissionEverywhere.getPermission(getApplicationContext(), new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, REQ_CODE, "Notification title", "This app needs a write permission", R.mipmap.ic_launcher) .call(); //waits.. boolean isGranted = response.isGranted(); if(isGranted){ //changed from isGrante to isGranted // Do stuff } } 

एक बहुत ही सरल लाइब्रेरी है जो इस तरह से करने की अनुमति देता है। आप किसी भी स्थान से (यहां तक ​​कि एक सेवा से) अनुमतियों की जांच कर सकते हैं, इस आधार पर कि ऐप अग्रभूमि या पृष्ठभूमि में है, यह सामान्य संवाद दिखाता है या अनुमति के लिए पूछे जाने वाले एक अधिसूचना को उत्पन्न करता है। कोड वास्तव में समझना आसान है और यह भी उपयोग करने में वास्तव में आसान है।

इसे एक कोशिश दें: एंड्रॉइड अनुमतियां

 @SuppressLint("NewApi") public void checkPerm() { locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); if ( checkSelfPermission(Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED ) { return; } locationManager.requestLocationUpdates( LocationManager.GPS_PROVIDER, 0, 0, new LocationListener() {....} } 

आप उपयोगकर्ता के एक रिसीवर को उत्तर देने के लिए ResultReceiver का उपयोग कर सकते हैं, फिर उसे सूचना के PendingIntent जरिए गतिविधि को कॉलबैक के रूप में पास कर PendingIntent । संदर्भ