दिलचस्प पोस्ट
कैसे नए आदेश को हटाने के लिए बास कमांड प्रतिस्थापन से बचें? क्या एंड्रॉइड रेडियो बटन समूह में रेडियो बटन आइकन बदलना संभव है? PHP में यूटीसी समय प्राप्त करें जब तक यह सफल न हो तब तक एसएमएस भेजें क्या मुझे <class> तत्वों को persistence.xml की आवश्यकता है? जावा.टिल.डेट का समय क्षेत्र कैसे सेट करें? प्रोग्रामेमी रूप से छुपाएं / दिखाएँ एंड्रॉइड सॉफ्ट कीबोर्ड TGraphicControl से घटित एक घटक के लिए माउस व्हील समर्थन जोड़ने के लिए कैसे? एक टैग पर विशेषता डाउनलोड करें जो IE में काम नहीं कर रहा है Django खोल से पायथन स्क्रिप्ट कार्यान्वित विशेष क्रम के साथ सदिश के अनुसार डेटा फ्रेम पंक्तियां ऑर्डर करें Google Map Fragment के अंदर वर्तमान स्थान दिखाएं कैसे CPU उपयोग सी # में प्राप्त करने के लिए? क्रोम में AJAX GET / POST / PUT / DELETE के बजाय ऑप्शन भेज रहा है? मैं eclipse.ini -vm विकल्प कैसे सेट करूं?

कैसे बताऊँ कि एंड्रॉइड में एसडीसीडी घुड़सवार है या नहीं?

मैं एक एंड्रॉइड एप्लिकेशन पर काम कर रहा हूं जिस पर देखने की जरूरत है कि उपयोगकर्ता किस छवि को संग्रहीत कर रहे हैं। समस्या यह है कि यदि उपयोगकर्ता के पास यूएसबी केबल के माध्यम से एसडी कार्ड रखा जाता है, तो मैं डिस्क पर छवियों की सूची नहीं पढ़ सकता।

क्या किसी को यह बताने का कोई तरीका पता है कि यूएसबी को घुड़सवार किया गया है ताकि मैं उपयोगकर्ता को यह बताए संदेश पॉप अप कर सकता हूं कि यह काम नहीं करेगा?

वेब के समाधान से एकत्रित समाधान "कैसे बताऊँ कि एंड्रॉइड में एसडीसीडी घुड़सवार है या नहीं?"

यदि आप डिवाइस पर छवियों तक पहुंचने का प्रयास कर रहे हैं, तो मीडियास्टोर सामग्री प्रदाता का उपयोग करना सबसे अच्छा तरीका है। सामग्री प्रदाता के रूप में इसे एक्सेस करने से आपको मौजूद छवियों को क्वेरी करने की अनुमति मिलेगी, और content:// मानचित्र पर मैप करें content:// उचित पर उस डिवाइस पर फ़ाइल पथ को URL।

यदि आपको अब भी एसडी कार्ड तक पहुंच की आवश्यकता है, तो कैमरा ऐप्लिकेशन में एक छवि यूटील्स वर्ग शामिल है जो यह जांचता है कि क्या एसडी कार्ड निम्नानुसार है:

 static public boolean hasStorage(boolean requireWriteAccess) { //TODO: After fix the bug, add "if (VERBOSE)" before logging errors. String state = Environment.getExternalStorageState(); Log.v(TAG, "storage state is " + state); if (Environment.MEDIA_MOUNTED.equals(state)) { if (requireWriteAccess) { boolean writable = checkFsWritable(); Log.v(TAG, "storage writable is " + writable); return writable; } else { return true; } } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { return true; } return false; } 

यहां jargonjustin पोस्ट में jargonjustin योग्य अनुपलब्ध कार्य है

 private static boolean checkFsWritable() { // Create a temporary file to see whether a volume is really writeable. // It's important not to put it in the root directory which may have a // limit on the number of files. String directoryName = Environment.getExternalStorageDirectory().toString() + "/DCIM"; File directory = new File(directoryName); if (!directory.isDirectory()) { if (!directory.mkdirs()) { return false; } } return directory.canWrite(); } 

मुझे ऐसा करने के गैर-एंड्रॉइड तरीके से पोस्ट करने के लिए माफी मांगनी है, उम्मीद है कि कोई एंड्रॉइड एपीआई का उपयोग कर एक उत्तर प्रदान कर सकता है।

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

हां, मुझे पता है कि यह बदसूरत है ….

 public static boolean isSdPresent() { return android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED); } 

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

  Cursor mCursor = this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, null, null, null, null); if (mCursor == null || !mCursor .moveToFirst()) { /** *mCursor == null: * - query failed; the app don't have access to sdCard; example: no sdCard * *!mCursor.moveToFirst(): * - there is no media on the device */ } else { // process the images... mCursor.close(); } 

अधिक जानकारी: http://developer.android.com/guide/topics/media/mediaplayer.html#viacontentresolver

 Cool....Check it out... try { File mountFile = new File("/proc/mounts"); usbFoundCount=0; sdcardFoundCount=0; if(mountFile.exists()) { Scanner usbscanner = new Scanner(mountFile); while (usbscanner.hasNext()) { String line = usbscanner.nextLine(); if (line.startsWith("/dev/fuse /storage/usbcard1")) { usbFoundCount=1; Log.i("-----USB--------","USB Connected and properly mounted---/dev/fuse /storage/usbcard1" ); } } } if(mountFile.exists()){ Scanner sdcardscanner = new Scanner(mountFile); while (sdcardscanner.hasNext()) { String line = sdcardscanner.nextLine(); if (line.startsWith("/dev/fuse /storage/sdcard1")) { sdcardFoundCount=1; Log.i("-----USB--------","USB Connected and properly mounted---/dev/fuse /storage/sdcard1" ); } } } if(usbFoundCount==1) { Toast.makeText(context,"USB Connected and properly mounted", 7000).show(); Log.i("-----USB--------","USB Connected and properly mounted" ); } else { Toast.makeText(context,"USB not found!!!!", 7000).show(); Log.i("-----USB--------","USB not found!!!!" ); } if(sdcardFoundCount==1) { Toast.makeText(context,"SDCard Connected and properly mounted", 7000).show(); Log.i("-----SDCard--------","SDCard Connected and properly mounted" ); } else { Toast.makeText(context,"SDCard not found!!!!", 7000).show(); Log.i("-----SDCard--------","SDCard not found!!!!" ); } }catch (Exception e) { e.printStackTrace(); } 

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

 /* Checks if external storage is available for read and write */ public boolean isExternalStorageWritable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { return true; } return false; } /* Checks if external storage is available to at least read */ public boolean isExternalStorageReadable() { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state) || Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { return true; } return false; } 

स्रोत: http://developer.android.com/guide/topics/data/data-storage.html

जर्ग्नेंजेंन के पद पर:

फ़ाइल ImageManager.java

विधि है स्टोरेज ->

 public static boolean hasStorage(boolean requireWriteAccess) { String state = Environment.getExternalStorageState(); if (Environment.MEDIA_MOUNTED.equals(state)) { if (requireWriteAccess) { boolean writable = checkFsWritable(); return writable; } else { return true; } } else if (!requireWriteAccess && Environment.MEDIA_MOUNTED_READ_ONLY.equals(state)) { return true; } return false; } 

विधि जांच FsWritable ->

  private static boolean checkFsWritable() { // Create a temporary file to see whether a volume is really writeable. // It's important not to put it in the root directory which may have a // limit on the number of files. String directoryName = Environment.getExternalStorageDirectory().toString() + "/DCIM"; File directory = new File(directoryName); if (!directory.isDirectory()) { if (!directory.mkdirs()) { return false; } } File f = new File(directoryName, ".probe"); try { // Remove stale file if any if (f.exists()) { f.delete(); } if (!f.createNewFile()) { return false; } f.delete(); return true; } catch (IOException ex) { return false; } }