targetSdkVersionを26にしたらストレージアクセスでエラー
対象APIレベルを26にしたら他にも大問題が発生した。
2番目の問題だが、APIレベル23(Android 6.0)から?
要求権限によってはインストール時に取得できず、アプリで取得しないといけないみたい。
外部ストレージの読み書き権限の確認と取得処理を入れる必要があった。
2番目の問題だが、APIレベル23(Android 6.0)から?
要求権限によってはインストール時に取得できず、アプリで取得しないといけないみたい。
外部ストレージの読み書き権限の確認と取得処理を入れる必要があった。
import android.support.v4.content.ContextCompat;
import android.support.v4.app.ActivityCompat;
import android.content.pm.PackageManager;
import android.Manifest;
if(ContextCompat.checkSelfPermission(this,Manifest.permission.READ_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
}else{
//ストレージアクセス
}
こんな感じで、ストレージアクセスするところで権限を確認して、無ければ要求。import android.support.v4.app.ActivityCompat;
import android.content.pm.PackageManager;
import android.Manifest;
if(ContextCompat.checkSelfPermission(this,Manifest.permission.READ_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED || ContextCompat.checkSelfPermission(this,Manifest.permission.WRITE_EXTERNAL_STORAGE)!=PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE},1);
}else{
//ストレージアクセス
}
さらに、
ここで処理しても権限が有効になって無くて結局エラーになる。
再起動すれば有効になってるんだが、そのまま処理する方法がわからない・・・
public void onRequestPermissionsResult(int requestCode,String[] permissions,int[] grantResults){
if(requestCode==1){
if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED&&grantResults[1]==PackageManager.PERMISSION_GRANTED){
//ストレージアクセス
}
}
}
こんな感じで要求に対する応答が返ってくるのだが、if(requestCode==1){
if(grantResults.length>0&&grantResults[0]==PackageManager.PERMISSION_GRANTED&&grantResults[1]==PackageManager.PERMISSION_GRANTED){
//ストレージアクセス
}
}
}
ここで処理しても権限が有効になって無くて結局エラーになる。
再起動すれば有効になってるんだが、そのまま処理する方法がわからない・・・