私はAndroid開発用のHTC Desire 610を使用しています。私は同じ質問に対する他の回答の例を踏襲しましたが、私のファイル保存はすべてSDカードではなく内部のデバイスストレージになります。電話は間違いなくSDカードを認識し、電話の中からファイルをSDカードに転送することができます。ファイルはSDカードではなく内部ストレージに保存されます
ファイルパスをSDカードにハードコーディングしてみましたが、コンピュータに接続していない状態でアプリを実行しようとしましたが、すべて役に立たなくなりました。私のアプリがこれらのファイルを直接SDカードに保存できることは非常に重要です。何か案は?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
writeDataToFile("2394872934729348");
}
public void writeDataToFile(String data){
BufferedWriter bufferedWriter = null;
String dataOutFileName = Environment.getExternalStorageDirectory().getAbsolutePath()+"/data.txt";
try{
bufferedWriter = new BufferedWriter(new FileWriter(dataOutFileName,true));
bufferedWriter.write(data);
bufferedWriter.flush();
}
catch (IOException e){
e.printStackTrace();
}
finally {
try {
if(bufferedWriter != null){
bufferedWriter.close();
}
} catch (IOException e){
e.printStackTrace();
}
}
MediaScannerConnection.scanFile(this,new String[]{dataOutFileName}, null,null);
}
}
EDIT: 私は今、これをしようとしています。私はパッケージファイルに直接書き込む場合を除き、私はあなたのAndroidManifest.xmlでアプリの適切な権限を与えることがあります
File dataDir = new File("/storage/ext_sd/Data/");
dataDir.mkdirs();
File outputFile = new File(dataDir,"data.txt");
try{
FileOutputStream fos = new FileOutputStream(outputFile);
OutputStreamWriter outputStreamWriter = new OutputStreamWriter(fos);
outputStreamWriter.write(data);
outputStreamWriter.close();
}
catch (IOException e){
Log.e("Exception", "File write failed: " + e.toString());
}
あなたのコードには、[リムーバブルストレージ](https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html)とは何の関係もありません。 Android SDKが[外部ストレージ](https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html)と呼んでいるものに書き込んでいます。 'getExternalFilesDirs()'を使って、アプリケーションが外付けストレージとリムーバブルストレージに書き込める場所を取得します。 – CommonsWare