アプリのソース コードを新しいランタイム アクセス許可で Android 6.0 に更新しようとしています。
ただし、ユーザーがアプリにストレージ権限を付与した場合、アプリ'onRequestPermissionsResult'
は'mkdirs'
.
AndroidManifest.xml に、次のものを入れました'uses-permission'
。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.xample.provasd"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="11" android:targetSdkVersion="23" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- application, activity, etc -->
次に、MainActivity でパーミッション リクエストを処理します。
public void executeButton(View view){
final String[] PERMISSIONS_STORAGE = { Manifest.permission.WRITE_EXTERNAL_STORAGE };
//Asking request Permissions
ActivityCompat.requestPermissions(this,PERMISSIONS_STORAGE, 9);
}
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
boolean writeAccepted = false;
switch(requestCode){
case 9:
writeAccepted = grantResults[0]==PackageManager.PERMISSION_GRANTED;
break;
}
if(writeAccepted){
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
File dir = new File(Environment.getExternalStorageDirectory()+"/"+"TestFolder");
boolean b = dir.mkdirs();
if(b){
Log.i("TAG", "WOW! "+dir+" created!");
}else{
Log.e("TAG", "OPS! "+dir+" NOT created! To be sure: new dir exist? "+dir.exists());
}
}
}
}
エミュレーターでアプリを起動すると、要求ダイアログが表示されます。本体'onRequestPermissionsResult'
が実行される許可を許可(writeAccepted=true)
しますが、フォルダーは作成されません!
これは、LogCat に表示されるものです。
I/TAG(9020): Permission ok
I/TAG(9020): Try to create dir: /storage/3143-1CEA/TestFolder
E/TAG(9020): OPS! /storage/3143-1CEA/TestFolder NOT created! To be sure: new dir exist? false
理由がわかりません。
誰か助けてください。
ありがとうございました、
ミルコ