2012-05-22 14 views
18

मेरे पास छवियां हैं, जिन्हें केवल विशेष एप्लिकेशन द्वारा एसडीकार्ड से पढ़ा जाता है, इसलिए मैं इसे छवि गैलरी से छिपाना चाहता हूं। मैंने इसमें .nomedia फ़ाइल डाली है, लेकिन इस फ़ाइल को अनदेखा किया गया है, छवियां अभी भी गैलरी में दिख रही हैं। मैंने इसे "।" रखा है शुरुआत में। अभी भी काम नहीं कर रहा है। कोई विचार?एंड्रॉइड - .nomedia छवियों के लिए काम नहीं कर रहा है

+4

मुझे नहीं पता कि यह वास्तव में काम करेगा या नहीं (क्योंकि मुझे नहीं पता कि एंड्रॉइड डेटा में दिखता है या सिर्फ फाइल एक्सटेंशन पर), लेकिन क्या आपने फाइल एक्सटेंशन को पूरी तरह से बदलने की कोशिश की है स्वामी हैं? चूंकि आप जानते हैं कि फाइलें आप उन्हें कैसे लोड कर सकते हैं, लेकिन एंड्रॉइड उन्हें अनदेखा कर सकता है? –

+0

@ डॉ। ड्रेडेल +1, बस एक्सटेंशन को हटाने से अच्छा करना चाहिए। – 66CLSjY

+0

क्या आप .nomedia फ़ाइल बनाने के लिए अपना कोड पोस्ट कर सकते हैं ताकि हम इसे सही सत्यापित कर सकें? अन्यथा, डॉ। ड्रेडेल की सिफारिश का उपयोग करना चाहिए। अन्यथा, मैं कहूंगा कि इस अन्य उत्तर को देखें http://stackoverflow.com/questions/2733576/android-file-creation-fails और सुनिश्चित करें कि आपके पास सही अनुमति है। – Brayden

उत्तर

5

अच्छा ... मैं मानता हूं कि मैं केवल अनुमान लगा रहा हूं, लेकिन चूंकि इसे टिप्पणी में +1 मिल गया है, इसलिए मैं इसे एक जवाब के रूप में एक घुमाव दूंगा। चूंकि यह आपका स्वयं का ऐप है, उदाहरण के लिए छवि फ़ाइल का विस्तार पूरी तरह से अद्वितीय ".myimagefile" में बदलें, और देखें कि यह एंड्रॉइड से छुपाता है या नहीं। इस बीच आप जानते हैं कि फ़ाइलों को आपके स्वयं के ऐप में लोड करना है, और उन्हें कैसे सहेजना है।

+2

'मीडियास्केनर' फ़ाइल प्रकार निर्धारित करने के लिए फ़ाइल एक्सटेंशन का उपयोग करता है, इसलिए प्रत्येक फ़ाइल का नाम बदलना काम करेगा, लेकिन निर्देशिका का नाम बदलना ('.nomedia' जोड़ने के बाद) बहुत आसान है। –

+0

जैसा कि मैंने कहा था, मैं सिर्फ ओपी द्वारा अपनी समस्या के रूप में वर्णित था और अनुमान लगा सकता था कि संभावित समाधान क्या हो सकता है। ऐसा लगता है। नोमीडिया एक सही समाधान नहीं है, दूसरे जवाब से जा रहा है, लेकिन मैं देख सकता हूं कि फ़ाइल नामकरण योजना कैसे करना परेशानी का अधिक हो सकता है। –

0

आप ज़िप संग्रह के हिस्से के रूप में एसडी कार्ड में स्थापित फ़ाइलों को पढ़ने के लिए एपीके विस्तार ज़िप लाइब्रेरी (एपीआई स्तर 5 या ऊपर की आवश्यकता है) का उपयोग करने पर विचार कर सकते हैं। इस पुस्तकालय का विवरण यहां पाया जा सकता:

http://developer.android.com/guide/market/expansion-files.html#ZipLib

मुमकिन है, अपने एसडी कार्ड पर एक ज़िप संग्रह में संग्रहीत फ़ाइलों गैलरी द्वारा प्रदर्शित नहीं किया जाएगा।

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

मुझे लगता है कि आप अपनी छवियों को एसडी कार्ड में संग्रहीत कर रहे हैं क्योंकि वे आपकी एपीके फ़ाइल में फिट होने के लिए बहुत बड़े हैं (इसकी 50 एमबी आकार सीमा दी गई है, जो कुछ उपकरणों के लिए अभ्यास में उससे भी छोटी है, क्योंकि बफरिंग मुद्दे)।

यदि ऐसा है, तो आप मान सकते हैं कि Google Play, 3/5/2012 के अनुसार, प्रत्येक 2 गीगाबाइट तक की "विस्तार फ़ाइलों" तक अनुलग्नक (आपके ऐप में) का समर्थन करता है। एपीके में अभी भी 50 एमबी अधिकतम है, लेकिन विस्तार फाइलें 4 जीबी से अधिक कुल भंडारण उपलब्ध कराती हैं। उन विस्तार फ़ाइलों को Google द्वारा आपके लिए परोसा जाता है, और उन्हें एक विशिष्ट एसडी कार्ड फ़ोल्डर में रखा जाता है जो आपके ऐप के लिए विशिष्ट है, और डाउनलोडर लाइब्रेरी द्वारा प्रदान की गई एपीआई का उपयोग करके एक्सेस किया जा सकता है (एपीआई स्तर 5 या ऊपर की आवश्यकता है)। यहाँ

http://android-developers.blogspot.in/2012/03/android-apps-break-50mb-barrier.html

और सुविधा का विस्तृत विवरण है:

यहाँ इस परिवर्तन के गूगल की घोषणा है

http://developer.android.com/guide/market/expansion-files.html

ध्यान दें कि जब यह सुविधा नई है, पुस्तकालयों पहले एपीआई स्तरों के उपयोग के लिए एंड्रॉइड एसडीके के साथ आपूर्ति की गई है। उदाहरण के लिए, मेरी स्थापना पर, मैं एपीआई -8 संस्करण यहाँ मिल: एक ही फ़ोल्डर अपने zip_file उप-फ़ोल्डर में उपरोक्त विस्तारण Zip पुस्तकालय भी शामिल है

<Android SDK base folder>\extras\google\play_apk_expansion\ 

है।

मैंने व्यक्तिगत रूप से अभी तक इस सुविधा का उपयोग नहीं किया है, और इसलिए इसे पूरी तरह से उद्धृत संदर्भों पर आधारित किया गया है।

17

मुझे लगता है कि आप एंड्रॉइड 4.0 का उपयोग कर रहे हैं, .nomedia तब तक ठीक से काम किया गया है।AOSP bug report for the issue बताते हैं:

MediaScanner Android 4.0 पर जब यह एक .nomedia फ़ाइल का सामना करना पड़ता पहले से अनुक्रमित फ़ाइलों भूल करने में विफल रहता है, लेकिन यह यह सम्मान करता है, तो यह पहली बार गुजरने पर मौजूद है है। तो कामकाज बस निर्देशिका का नाम बदलना है। बेशक, यदि आप चाहें तो अगले स्कैन के बाद आप नाम बदल सकते हैं।

अद्यतन: मुझे लगता है कि पूर्ण समाधान वास्तव में निर्देशिका का नाम बदलने के बाद मीडिया स्कैन को मजबूर करना होगा। मैं यह कोशिश की है नहीं, लेकिन कुछ इस तरह चाल करना चाहिए:

sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + 
    Environment.getExternalStorageDirectory()))); 
+1

ध्यान दें कि रिबूटिंग फोन भी छवियों को पुन: संशोधित करता है [एंड्रॉइड 4.1.2 पर परीक्षण किया गया] –

+0

@GrzegorzDev रीबूट करने के बाद कैसे जांचें? यह ".nomedia" –

+0

के साथ काम नहीं कर रहा है http://android.stackexchange.com/questions/51784/can-i-trigger-a-media-scan-via-the-command-line –

1

.nomedia फ़ाइल निवारक है, (एंड्रॉयड 4.0 में) उपचारात्मक नहीं है, और यह एक बग है। यदि आपके पास .nomedia फ़ाइल थी और छवियां पहले से ही इसमें हैं, तो गैलरी अभी भी छवियों की खोज करेगी।

आपको फ़ाइल इससे पहले छवियों को डालने की आवश्यकता है।

संपादित: सभी फ़ोल्डर एक डॉट से प्रारंभ हो स्कैन नहीं किया है (क्योंकि छिपा हुआ)।

+0

"निवारक, उपचारात्मक नहीं" यह केवल आइस क्रीम सैंडविच पर सच है - मेरा जवाब देखें। –

4

यहाँ कुछ मैंने पाया है अपने आप को:

http://www.transformerforums.com/forum/asus-transformer-faq/17765-solved-nomedia-doesnt-work-under-honeycomb-ics.html

हालांकि, उस विधि को एक छोटे से परिवर्तन:

  1. डाउनलोड और इंस्टॉल करें SDRescan एप्लिकेशन गैलरी ऐप के लिए
  2. डेटा साफ़
  3. मीडिया स्टोरेज ऐप के लिए डेटा साफ़ करें
  4. चरण 1

एसडीकार्ड को फिर से स्कैन किया जाना चाहिए और इस निर्देशिका पर .nomedia फ़ाइलों वाली सभी निर्देशिकाओं को अनदेखा किया जाना चाहिए।

+0

यह मेरे लिए काम किया है। यह आसान है। मेरे मामले में, मैं फ़ोल्डर का नाम बदल नहीं सका क्योंकि यह व्हाट्सएप छवियां और व्हाट्सएप वीडियो अन्य व्हाट्सएप मीडिया फ़ोल्डर्स था जिसे मैं गैलरी में दिखाना नहीं चाहता था। फ़ोल्डर का नाम बदलने से शायद व्हाट्सएप ऐप डेटा भी खो देगा। यही कारण है कि, यह विधि सबसे अच्छी और सुरक्षित विधि है। – finitenessofinfinity

5

.nomedia बग सही है और आप इसे एक पूर्ववर्ती छवि फ़ोल्डर में जोड़ सकते हैं।

आप फ़ोल्डर को नाम बदलकर, नोमोडिया फ़ाइल बनाने के बाद गैलरी को फिर से अनुक्रमित करने के लिए मजबूर कर सकते हैं, गैलरी चलाएं ("छुपा फ़ोल्डर अब गायब होना चाहिए), और फ़ोल्डर को वापस जो भी आप चाहते हैं उसका नाम बदलें। रहने छिपा हुआ।

मैं सिर्फ इसे फिर से यह मेरे फोन पर काम करता है सुनिश्चित करने के लिए किया था। एंड्रॉयड 4.0.4।

1

मेरी स्मृति कार्ड मैं तस्वीरों के हजारों है कि मीडिया स्कैनर अभिभूत है में। तब रूट फ़ोल्डर में मेरे मेमोरी कार्ड पर, "रूटफोल्डर" से "रूटफॉल्डर" का नाम बदलकर "रूटफॉल्डर"

छिपी हुई निर्देशिका बन गया और अधिक उपयोग नहीं किया। नोमीडिया

इसे आजमाएं।

1

मीडिया स्टोरेज 4.1.1 के साथ मेरे सैमसंग गैलेक्सी नोट 2 पर, ऊपर दी गई चालों में से कोई भी पूरी तरह से काम नहीं करता है, इस अर्थ में: नोमियाडिया फाइलों वाली निर्देशिकाएं अभी भी स्कैन की गई हैं, जो बैटरी को बहुत कम कर सकती हैं (हालांकि परिणाम गैलरी में अनदेखा किया जाता है), और साथ ही साथ नाम से नाम वाली निर्देशिकाएं भी।'अभी भी
:-(स्कैन किए जाते हैं मैं "मीडिया स्कैनर रूट" अनुप्रयोग है, जो भद्दा मीडिया स्कैनर पूरी तरह से अक्षम करने की अनुमति देता का उपयोग कर का सहारा लिया। यह जाहिरा तौर पर BTW

pm disable com.android.providers.media/com.android.providers.media.MediaScannerReceiver

की तरह कुछ द्वारा हासिल की है, अक्षम करने/मीडिया ठंड स्टोरेज ऐप का बुरा प्रभाव पड़ता है कि रिंगटोन और अधिसूचनाओं का चयन और बाध्यकारी अब और काम नहीं करता है (क्या एक अद्भुत डिज़ाइन), लेकिन जब केवल स्कैनर घटक को अक्षम कर रहा है, तब भी कोई भी उपयोग कर सकता है, उदाहरण के लिए, ईएस फाइल एक्सप्लोरर टोन चुनने के लिए

0

गैलरी को अक्सर अपडेट नहीं किया जाता है और कुछ थंबनेल अभी भी दृश्य पर हैं। इसके लिए आपको कोड का पालन करके फोन को रीबूट करने या प्रोग्रामेटिक रूप से गैलरी अपडेट करने की आवश्यकता है।

/** 
* This method is must to reflect changes on gallery, if some file is 
* deleted or moved, <b> no updation is shown on gallery till phone is 
* rebooted </b> or <i>till this method UpdateGallery(Activity activity) is 
* called</i> UpdateGallery 
*/ 
public static void UpdateGallery(Activity activity) { 
    activity.sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri 
      .parse("file://" + Environment.getExternalStorageDirectory()))); 
} 
संबंधित मुद्दे