2010-09-27 91 views
1

当我运行下面的代码行:MediaScannerConnection SCANFILE扫描器崩溃

MediaScannerConnection scanner = new MediaScannerConnection(this, null); 
    scanner.connect(); 
    scanner.scanFile(szFinalFileName, null); //<---crash here 

我得到控制台窗口崩溃,并且此消息:

09-26 14:47:44.074: ERROR/MediaScannerService(10288): Failed to delete file /data/data/com.android.providers.media/pause_scan 

没有任何人有任何想法,为什么这没有工作,我能做些什么来解决它?

在此先感谢:-)

回答

5

我想通了。

下面是代码:

final String szFile = szFinalFileName; 

      m_pScanner = new MediaScannerConnection(this, 
        new MediaScannerConnectionClient() { 
         public void onMediaScannerConnected() { 
          m_pScanner.scanFile(szFile, null /*mimeType*/); 
         } 

         public void onScanCompleted(String path, Uri uri) { 
          if (path.equals(szFile)) { 
           MugMashView.this.runOnUiThread(new Runnable() { 
            public void run() { 
             Toast 
              .makeText(getApplicationContext(), 
               "Image now available in Home > Pictures", 
               Toast.LENGTH_SHORT) 
              .show(); 
            } 
           }); 
           m_pScanner.disconnect(); 
          } 
         } 

       }); 
      m_pScanner.connect(); 
8

另一种方式来做到这一点是广播的意图,并让系统处理。

例如

public void scanFile(File downloadedFile){ 
    Uri contentUri = Uri.fromFile(downloadedFile); 
    Intent mediaScanIntent = new Intent("android.intent.action.MEDIA_SCANNER_SCAN_FILE"); 
    mediaScanIntent.setData(contentUri); 
    mContext.sendBroadcast(mediaScanIntent); 
}