2016-11-16 28 views
0

.txtファイルのみのファイルチューザを作成し、その内容をStringで表すコードを記述しています。問題は、ファイルを選択しても何も起こらないことです(ログには結果コードは-1、要求コードは0)。誰でも助けてくれますか?ここで.txtファイルのための私のチューは、次のとおりです。ここでandroidの.txtファイルから文字列を取得する方法

public void onUploadClicked(View view) { 
    Intent intent = new Intent(); 
    intent.addCategory(Intent.CATEGORY_OPENABLE); 
    intent.setType("text/plain"); 
    intent.setAction(Intent.ACTION_GET_CONTENT); 
    startActivityForResult(Intent.createChooser(intent, getText(R.string.select_file)), REQUEST_CODE); 

} 

は私OnActivityResult方法です:

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

    if (resultCode == Activity.RESULT_OK) { 
     if (data == null) { 
      return; 
     } else { 
      Uri uri = data.getData(); 
      uploadedFile = new File(uri.getPath()); 
      try { 
       readFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    } else { 
     return; 
    } 
} 

そして、ここでは、文字列に.txtファイルを読み込むための私の方法です:

private void readFile() throws IOException { 

    uploadedString = new StringBuilder(); 
    BufferedReader reader = new BufferedReader(new FileReader(uploadedFile)); 
    String line; 
    while ((line = reader.readLine()) != null) { 

     uploadedString.append(line); 
     uploadedString.append('\n'); 
    } 
    Log.i("Uploaded successfully: ", uploadedString.toString()); 
    reader.close(); 
} 
+0

'のgetText(R.string.select_file)'を何ですか? –

+0

文字列リソースへの参照、つまり「テキストファイルの選択」。 – fregomene

+0

ああ、それは 'getString'ではなく、' getString'だと思った。だから、結果コードをどこに記録しているのだろうか? (おそらくリクエストコードもチェックしてください) –

答えて

1

試してみる

public static int PICK_FILE = 1; 

は、その後、作成したユーザ

private String readTextFile(Uri uri){ 
     BufferedReader reader = null; 
     StringBuilder builder = new StringBuilder(); 
     try { 
      reader = new BufferedReader(new InputStreamReader(getContentResolver().openInputStream(uri))); 
      String line = ""; 

      while ((line = reader.readLine()) != null) { 
       builder.append(line); 
      } 

     } catch (IOException e) { 
      e.printStackTrace(); 
     } finally { 
      if (reader != null){ 
       try { 
        reader.close(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 
      } 
     } 
     return builder.toString(); 
    } 

が選んだテキストファイルを読むためにonActivityResult()

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

     if (requestCode == PICK_FILE) { 
      if (resultCode == RESULT_OK) { 
       // User pick the file 
       Uri uri = data.getData(); 
       String fileContent = readTextFile(uri); 
       Toast.makeText(this, fileContent, Toast.LENGTH_LONG).show(); 
      } else { 
       Log.i(TAG, data.toString()); 
      } 
     } 
    } 

メソッドをオーバーライドする暗黙の意思

Intent intent = new Intent(Intent.ACTION_GET_CONTENT); 
intent.setType("text/plain"); 
startActivityForResult(intent, PICK_FILE); 
+0

ありがとう!できます! – fregomene

+0

。 。あなたは答えを受け入れることができます。 –

関連する問題