2016-08-18 8 views
0

にURIから読み取るしようとしたとき、私は、URIからのFileInputStreamを読みたいが、それは、これはこれまでのところ私のコードでファイルが見つからない例外ファイルが見つかりません例外アンドロイド

を返して:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("*/*"); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 

    try { 
     startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), FILE_SELECT_CODE); 
    } catch (android.content.ActivityNotFoundException ex) { 
     Toast.makeText(getContext(), "Please install a File Manager.", Toast.LENGTH_SHORT).show(); 
    } 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
     case FILE_SELECT_CODE: 
      if (resultCode == RESULT_OK) { 
       // Get the Uri of the selected file 
       Uri fileUri = data.getData(); 
       long size = Helper.GetFileSize(getActivity(),fileUri); 
       File F = new File(fileUri.getPath()); 
       Log.d("File", "File Uri: " + fileUri.toString()); 
       FileInputStream fis; 
       try { 
        fis = new FileInputStream(new File(F.getPath())); 
       } 
       catch (Exception ex) { 
        ex.printStackTrace(); 
       } 
      } 
      break; 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 
+0

あなたはギャラリーからそれをロードしようとしていますか? – sumandas

+0

はいギャラリーからロードしようとしています – Sora

+0

私の質問が更新されました – Sora

答えて

1

ファイルは、実際のfilePathに

は、あなたのコードスニペットでは、このビットを更新しようと持っている必要があり、一方、.... //::問題は、パスが、コンテンツが含まれている

Uri fileUri = data.getData(); 
String filePath = getPathFromUri(this,fileUri); 
long size = Helper.GetFileSize(getActivity(),filePath); 
File F = new File(filePath); 

と、このメソッドが支援することです

public String getPathFromURI(Context context, Uri contentUri) { 
    Cursor mediaCursor = null; 
    try { 
      String[] dataPath = { MediaStore.Images.Media.DATA }; 
      mediaCursor = context.getContentResolver().query(contentUri, dataPath, null, null, null); 
      int column_index = mediaCursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA); 
      mediaCursor.moveToFirst(); 
      return mediaCursor.getString(column_index); 
    } finally { 
     if (mediaCursor != null) { 
      mediaCursor.close(); 
     } 
    } 
} 
+0

GetPathFromUriは常にnullを返しています。私はおそらく 'dataPath'から推測しています。理由はわかりません.please help – Sora

+0

ahh、contentUriに割り当てられている値を貼り付けてください。 – sumandas

+1

私はこの問題を昨日修正しました。すべての種類のuriの 'https:// github.com/iPaulPro/aFileChooser'を処理するクラスが見つかりました – Sora

関連する問題