2017-04-24 4 views
0

SDCard上のファイルから読み込むコードをテストしようとしています。これを行うには、エミュレータのSDCardにサンプルファイルをロードしたいと思います。私は、エミュレートされたデバイスのフォルダにファイルをプッシュすることで、Android Device Monitorでこれを行うことができると信じていますが、どちらですか?私は、エミュレートされたSDカードにファイルを置くことができるように見え、エミュレータの設定\ storageとUSB \ SDカードで見ることができますが、コードレポートファイルが見つかりません。何か提案してください?私はMac上でAndroidスタジオv2.3.1を使用しています。ここに私のコードだ:Androidデバイスモニタを使用してSDカードにテストファイルをロードするには

File dir = Environment.getExternalStorageDirectory(); 
    File file = new File(dir,"dtcontrol.xml"); 

    StringBuilder text = new StringBuilder(); 

    try { 
     BufferedReader br = new BufferedReader(new FileReader(file)); 
     String line; 

     while ((line = br.readLine()) != null) { 
      text.append(line); 
      text.append('\n'); 
     } 
     br.close(); 
    } 
    catch (IOException e) { 
     e.printStackTrace(); 
     return; 
    } 

私のマニフェストは、私は私のSDカードへのアクセス権を与えると考えている権限があります。

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 
<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /> 

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
etc.... 
+0

あなたはAndroidバージョン6.0(API 23)以上で試していますか? –

+0

こんにちは、はいそれはAndroid 6、API23です – MPH

+0

私はあなたの質問に答えを追加しました、それが助けてくれることを願って –

答えて

0

あなたは、Android 6.0で追加され、実行時のアクセス権を確認する必要がありますが、今」にISNアプリをインストールする際に許可を求めるのに十分です。

DBファイルをロードする前に、非常に簡単です。許可がある場合は、READ_EXTERNAL_STORAGEのパーミッションをチェックする必要があります。 official docsには、実行時のアクセス許可を確認して要求する方法に関する詳細情報があります。

その他のアプローチでは、実行時アクセス許可を追加せずにコードをテストするために、23より低いAPIを使用してAndroid Virtual Deviceを作成することがありますが、公開する前に追加する必要があります。

+0

ねえ、ありがとう。私はREAD_EXTERNAL_STORAGE権限のために私のアプリのメインにランタイム権限チェックを追加しました。そして、私は '0'(PERMISSION_GRANTED)を戻していることがわかります。しかし、ファイルを開こうとすると、File Not Found IOExceptionが表示されます。 ADMの観点からは、テストファイルはどこに置くべきですか?ありがとう – MPH

+0

おそらく問題は、ファイルのパスです。 'file'変数からあなたのパスを' file.getAbsolutePath(); 'で表示し、それがファイルを保存した場所と一致することを確認してください。私はあなたに正確な経路を伝えることはできません。なぜなら、それは特定の条件のもとでは通常異なるからです。 –

関連する問題