2017-11-30 7 views
0

ファイルを選択するファイルブラウザをユーザに与えています。 onActivityResultで私はファイルパスを/file/sdcard/Android/data/com.coca_cola.android.conferenceapp/cache/Conference/export.txtとして取得しています。これでファイルオブジェクトを作成しようとすると、私は作成できません。私は/ファイルを削除/ sdcard/Android/data/com.coca_cola.android.conferenceapp/cache/Conference/export.txt上のファイルオブジェクトを作成するときに作成されます。しかし、他のデバイスと同じようにファイルパスを/ファイル/から削除することはできません。以下のコードファイルオブジェクトが作成されていません

private void readContactFromFile(String path) { 
    StringBuilder text = new StringBuilder(); 
    try { 
     String st = "/file/sdcard/Android/data/com.coca_cola.android.conferenceapp/cache/Conference/export.txt"; 
     File file = new File(st); 
     if (file.exists()) { 
      Log.v("TTT", "file exist"); 
     } 
     Log.v("TTT", file.toString()); 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String line; 
     while ((line = br.readLine()) != null) { 
      text.append(line); 
      Log.i("Test", "text : " + text + " : end"); 
      text.append('\n'); 
     } 
     br.close(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
} 

であると私はOnActivityResult

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 

    if (resultCode == RESULT_OK) { 

     switch (requestCode) { 

      case REQUEST_PICK_FILE: 
       Uri uri = data.getData(); 
       String path = data.getData().getPath(); 
       Log.v("PATH", path); 

       readContactFromFile(path); 
       break; 
     } 
    } 
} 

上のパスを取得していますそして私は、私は完璧なパスを取得できますかファイルブラウザ

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
    intent.setType("*/*");  //all files 
    //intent.setType("text/xml"); //XML file only 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 

    try { 
     startActivityForResult(Intent.createChooser(intent, "Select a File to Upload"), REQUEST_PICK_FILE); 
    } catch (android.content.ActivityNotFoundException ex) { 
     // Potentially direct the user to the Market with a Dialog 
     Toast.makeText(this, "Please install a File Manager.", Toast.LENGTH_SHORT).show(); 
    } 

を開くために呼び出していますどのようにこれがありますまたはこの問題をどのように削除できますか? ありがとうございます

+0

あなたの質問を編集して、このonActivityResult()呼び出しをトリガーしている 'startActivityForResult()'呼び出しを投稿してください。 – CommonsWare

+0

しました。チェックインしてください –

答えて

1

さまざまなデバイスでパスが異なるため、適切なパスを取得するためにフレームワークapiを使用する必要があります。

Environment classをご覧ください。代わりにハードコードされた文字列のパスを使用しての

+0

私は何をする必要がありますか? –

0

は、それは、デバイスからデバイスに延期しませんEnvironmentクラス

File file=new File(String.valueOf(Environment.getExternalStorageDirectory())+"YOUR_REQUIRED_FILE_PATH"); 

を使用してパスを取得します。 これは役に立ちます。

関連する問題