アンドロイド6+は危険なアクセス許可が必要ですが、強制停止するまで私のコードはメモリ内にファイルを保存しないので、アプリケーションでアクセス許可を使用しています。実行時アクセス権を持つwrite_external_storageを取得する
GET許可ランタイムのための私のコード:
if(ContextCompat.checkSelfPermission(MainActivity.this,
android.Manifest.permission.WRITE_EXTERNAL_STORAGE) !=
PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(MainActivity.this,new String[]{
Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
}else{
saveFile();
}
リスナーのユーザーからの許可または拒否のチェックのために:
public void onRequestPermissionsResult(int requestCode,String[] permission,int[] grantedResult){
super.onRequestPermissionsResult(requestCode, permission, grantedResult);
switch(requestCode){
case 1:
if(grantedResult.length > 0 && grantedResult[0] == PackageManager.PERMISSION_GRANTED){
Log.i("TAG","Permission Granted");
}else{
Log.i("TAG","Permission Denied");
}
}
}
とエラーlogcat:
java.io.FileNotFoundException: /storage/1B0A-390B/hamed-baradaran.mp3: open failed: EACCES (Permission denied)
この中SAVEFILE方法:
public void saveFile(){
InputStream in;
OutputStream out;
try{
in = getResources().openRawResource(R.raw.hamedbaradaran);
out = new FileOutputStream(Environment.getExternalStorageDirectory()+"/hamed-baradaran.mp3");
byte[] buffer = new byte[1024];
int length;
while((length = in.read(buffer)) > 0)
out.write(buffer,0,length);
out.flush();
out.close();
in.close();
}catch(Exception e){
e.printStackTrace();
}
}
時にアプリ起動
にこのコードを試すことが何かを読んしようとしていますファイル?さらに、マニフェストに権限を追加しましたか? –
いいえ私はファイルを保存したい –
はい私はマニフェストへのアクセス許可を追加しました –