2015-09-02 11 views
27

में बाहरी स्टोरेज पर काम नहीं करता है मेरे पास एक ऐप है जो FileObserver के साथ बाहरी संग्रहण पर सार्वजनिक निर्देशिका देखता है। यह Lollipop डिवाइस पर ठीक काम करता है। मैं Marshmallow के लिए समर्थन जोड़ना चाहता हूं, इसलिए मैंने इसके साथ एक नेक्सस 9 टैबलेट स्थापित किया।FileObserver एंड्रॉइड 6.0 मार्शमलो (एपीआई 23)

मार्शमलो डिवाइस पर, यह विफल रहता है, लॉलीपॉप डिवाइस पर यह ठीक है। मार्शमलो डिवाइस पर, FileObserver अन्य प्रक्रियाओं के कारण होने वाली फ़ाइल सिस्टम घटनाओं पर प्रतिक्रिया नहीं करता है। जैसे एक स्क्रीनशॉट लेना, adb खोल के माध्यम से फाइलें बनाना। यदि यह मेरे ऐप द्वारा बनाई गई है तो यह ठीक काम करता है।

Marshmallow पर, मैं WRITE_EXTERNAL_STORAGE और READ_EXTERNAL_STORAGEManifest.xml से अनुमतियों के लिए पूछता हूं।

जब मैं एपीआई 23 के साथ संकलित करता हूं, तो मैं यह भी सुनिश्चित करता हूं कि मैं ActivityCompat.requestPermissions() पर कॉल करता हूं।

जब मैं एपीआई 22 के साथ संकलित करता हूं, तो मैं बस Manifest.xml पर भरोसा करता हूं।

यह काम करता है अगर मैं /data/data/my-package-name पर सामान देखता हूं।

अगर मैं /storage/emulated/0/Pictures/Screenshots पर सामान देखता हूं तो यह विफल हो जाता है।

क्या कोई निम्नलिखित FileObserver का परीक्षण करता है? :

  • Marshmallow डिवाइस
  • एपीआई 23 और एपीआई 22?
  • बाह्य भंडारण
  • अवलोकन ऐप की तुलना में किसी अन्य प्रक्रिया द्वारा बनाई गई फ़ाइलें (उदा। adb या स्क्रीनशॉट लेना)।
+0

क्या आपने बाहरी संग्रहण पर अन्य स्थानों की कोशिश की है? यह संभव है कि आपकी समस्या उस निर्देशिका तक सीमित है, इसकी कुछ संवेदनशील प्रकृति दी गई है। बीटीडब्ल्यू, जिसे आप संकलित करते हैं, रनटाइम अनुमतियों के संबंध में आपके ऐप के व्यवहार पर कोई असर नहीं पड़ता है; आपका 'targetSdkVersion' करता है। – CommonsWare

+0

कहीं भी FileObserver का संदर्भ रखना सुनिश्चित करें। यदि यह कचरा इकट्ठा किया जाता है, तो यह घटनाओं को प्राप्त करना बंद कर देगा। –

+0

इसके अलावा, एफडब्ल्यूआईडब्लू, [इस बारे में एक मुद्दा दायर किया गया है] (https://code.google.com/p/android-developer-preview/issues/detail?id=3099)। – CommonsWare

उत्तर

0

यह मार्शमलो, see this link में एक बग प्रतीत होता है।

यह नौगेट में भी तय नहीं है, आप एपीआई से इस पूरे फाइल ऑब्सर्वर से छुटकारा पा सकते हैं, क्योंकि यह पूरी तरह से बेकार है कि अधिकांश उपकरणों पर, यह काम नहीं करेगा।

0

कृपया गैलरी से कोई फ़ाइल प्राप्त करते समय रन टाइम अनुमति लें।

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