我有一個用戶可以繪製的應用程序,然後將該繪圖作爲.png文件「導出」到外部存儲設備(如果存在)。生成PNG,將文件複製到外部都像魅力一樣工作,但卻發生了一個相當獨特的問題;導出後,如果用戶通過我的文件(在這種情況下運行2.2的三星Tab)導航到圖像,他們可以看到.png文件,但是當它們打開它時,屏幕黑色約10秒...然後他們會看到圖片。此外,圖片也不會顯示在用戶的「圖庫」應用中。Android:媒體掃描程序未運行時出現問題
現在,如果用戶通過USB將設備連接到計算機,或者重新啓動設備,他們可以從我的文件中訪問圖像沒有問題,並且從這一點出現在「圖庫」中,但是再次新插入的文件在重新循環/連接設備之前會遇到同樣的問題。
我的想法是,這必須與媒體掃描儀相關(至少在「圖庫」問題的情況下,它肯定是)。
因此,因爲我瞄準的是Api 8+,我正嘗試使用靜態的MediaScannerConnection.scanFile()
方法讓操作系統重新掃描並將我的圖像添加到圖庫中等。同時希望這可以解決奇怪的延遲問題在打開圖像。這裏是我的代碼:
MediaScannerConnection.scanFile(
context,
new String[] { "/mnt/sdcard/MyApp" },
null,
null
);
的logcat給了我下面的條目時,我出口的圖像,從而運行上面的電話:
DEBUG/MediaScannerService(2567): IMediaScannerService.scanFile: /mnt/sdcard/MyApp mimeType: null
DEBUG/MediaScannerService(2567): onStartCommand : intent - Intent { cmp=com.android.providers.media/.MediaScannerService (has extras) }
DEBUG/MediaScannerService(2567): onStartCommand : flags [0], startId [1]
DEBUG/MediaScannerService(2567): ServiceHandler:handleMessage volume[null], filePath[/mnt/sdcard/MyApp]
DEBUG/MediaProvider(2567): getSdSerial() sd state = removed
INFO/Database(2567): sqlite returned: error code = 17, msg = prepared statement aborts at 43: [SELECT DISTINCT sd_serial FROM images WHERE sd_serial LIKE 'external_0x%']
ERROR/MediaProvider(2567): removeMediaDBData called
DEBUG/MediaScanner(2567): prescan enter: path - /mnt/sdcard/MyApp
DEBUG/MediaScanner(2567): prescan return
所以,它看起來像MediaScanner越來越正確的位置,但沒有找到SD卡,這是正確的,並失敗。三星Tab有內置的非SD外部存儲,Android可以通過Environment.getExternalStorageDirectory()
進行訪問。我如何告訴它掃描非SD存儲?
任何想法如何進行?
保羅