2017-03-15 70 views
0

即時通訊嘗試從特定文件夾打開包含圖片/視頻的圖庫。我正在使用this solution,但即時獲取下面的錯誤代碼,沒有任何反應。我想它的東西在Uri,但我找不到解決方案。有沒有人有一個想法如何解決這個問題?我還包括「我的」代碼。Android沒有發現處理意圖的活動MediaScanner

03-15 16:30:53.733 21902-22775/de.comidos.fotoapp D/onScanCompleted: Scan completed: content://media/external/images/media/1730 
 
03-15 16:30:53.752 21902-22775/de.comidos.fotoapp D/Instrumentation: checkStartActivityResult() : Intent { act=android.intent.action.VIEW dat=content://media/external/images/media/1730 launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } } 
 
03-15 16:30:53.773 21902-22775/de.comidos.fotoapp W/Binder: Binder call failed. 
 
                  android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=content://media/external/images/media/1730 launchParam=MultiScreenLaunchParams { mDisplayId=0 mFlags=0 } } 
 
                   at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1839) 
 
                   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1531) 
 
                   at android.app.Activity.startActivityForResult(Activity.java:4389) 
 
                   at android.app.Activity.startActivityForResult(Activity.java:4348) 
 
                   at android.app.Activity.startActivity(Activity.java:4672) 
 
                   at android.app.Activity.startActivity(Activity.java:4640) 
 
                   at de.comidos.fotoapp.GalleryViewActivity.onScanCompleted(GalleryViewActivity.java:59) 
 
                   at android.media.MediaScannerConnection$1.scanCompleted(MediaScannerConnection.java:55) 
 
                   at android.media.IMediaScannerListener$Stub.onTransact(IMediaScannerListener.java:60) 
 
                   at android.os.Binder.execTransact(Binder.java:573)

package de.comidos.fotoapp; 
 
import android.app.Activity; 
 
import android.content.Intent; 
 
import android.media.MediaScannerConnection; 
 
import android.net.Uri; 
 
import android.os.Bundle; 
 
import android.os.Environment; 
 
import android.util.Log; 
 
import java.io.File; 
 

 

 
public class GalleryViewActivity extends Activity implements MediaScannerConnection.MediaScannerConnectionClient { 
 
    public String[] allFiles; 
 
    private String SCAN_PATH ; 
 
    private static final String FILE_TYPE = "*/*"; 
 

 
    private MediaScannerConnection conn; 
 
    /** Called when the activity is first created. */ 
 
    @Override 
 
    public void onCreate(Bundle savedInstanceState) { 
 
     super.onCreate(savedInstanceState); 
 
     setContentView(R.layout.activity_gallery); 
 

 
     File folder = new File(Environment.getExternalStorageDirectory().toString()+"/comidos/sent/"); 
 
     allFiles = folder.list(); 
 
     // uriAllFiles= new Uri[allFiles.length]; 
 
     for(int i=0;i<allFiles.length;i++) 
 
     { 
 
      Log.d("all file path"+i, allFiles[i]+allFiles.length); 
 
     } 
 
     // Uri uri= Uri.fromFile(new File(Environment.getExternalStorageDirectory().toString()+"/yourfoldername/"+allFiles[0])); 
 
     SCAN_PATH= Environment.getExternalStorageDirectory().toString()+"/comidos/sent/"+allFiles[0]; 
 
     Log.d("SCAN PATH", "Scan Path " + SCAN_PATH); 
 

 
    } 
 
    private void startScan() 
 
    { 
 
     Log.d("Connected","success"+conn); 
 
     if(conn!=null) 
 
     { 
 
      conn.disconnect(); 
 
     } 
 
     conn = new MediaScannerConnection(this,this); 
 
     conn.connect(); 
 
    } 
 
    @Override 
 
    public void onMediaScannerConnected() { 
 
     Log.d("onMediaScannerConnected","success"+conn); 
 
     conn.scanFile(SCAN_PATH, FILE_TYPE); 
 
    } 
 
    @Override 
 
    public void onScanCompleted(String path, Uri uri) { 
 
     try { 
 
      Log.d("onScanCompleted","Scan completed: "+uri); 
 
      if (uri != null) 
 
      { 
 
       Intent intent = new Intent(Intent.ACTION_VIEW); 
 
       intent.setData(uri); 
 
       startActivity(intent); 
 
      } 
 
     } finally 
 
     { 
 
      conn.disconnect(); 
 
      conn = null; 
 
     } 
 
    } 
 
    @Override 
 
    public void onResume(){ 
 
     super.onResume(); 
 
     startScan(); 
 

 
    } 
 
}

回答

0

有您的設備上,支持contentUri不管什麼MIME類型內容的ACTION_VIEW沒有活動。沒有要求Android設備針對每個可能的內容都有ACTION_VIEW活動。

+0

你確定這是問題嗎?如果我只用這個代碼打開一個:String path =「/storage/emulated/0/comidos/sent/ANFRAGE_4006209501061_357330077957793_2017-03-14-09-07-43-47_001.jpg」; Intent i = new Intent(); i.setAction(Intent.ACTION_VIEW); i.setDataAndType(Uri.fromFile(new File(path)),「image/*」); startActivity(i);它工作 – TBrauwers

+0

@TBrauwers:「你確定這是這裏的問題嗎?」 - 這是例外情況告訴你的。 「如果我只是用這個代碼打開一個單獨的文件」 - 任何活動都會響應這個「Intent」支持'file'而不是'content'作爲方案。 – CommonsWare

+0

好吧,我想你的權利...你知道我的問題的任何解決方案(打開一個特定的文件夾畫廊)我已經嘗試過ImageAdapter和網格視圖,但即使在我的S7,這是超級慢... – TBrauwers

相關問題