2010-09-27 3 views
1

Quand je lance la ligne de code suivante:scanner MediaScannerConnection Scanfile se bloque

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

je reçois un accident et ce message dans la fenêtre de la console:

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

que quelqu'un a des idées pour lesquelles cette ne fonctionne pas et ce que je peux faire pour le réparer? Merci d'avance :-)

Répondre

5

Je l'ai compris.

Voici le code:

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

Une autre façon de le faire est de diffuser une intention et laisser le système gérer.

par exemple.

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); 
}