هر کار میکنم دایرکتوری جدید ایجاد نمیشه چرا؟ api target 23
سلام.
هر کار میکنم دایرکتوری جدید ایجاد نمیشه چرا؟
File folder = new File(Environment.getExternalStorageDirectory() + "/mashin"); boolean success = true; if (!folder.exists()) { Log.i("Log","no exist"); success = folder.mkdir(); } if (success) { Log.i("Log","sucsess"); } else { Log.i("Log","Noooooo"); }
سلام.نه متاسفانه.تو امولیتور اندروید استدیو اینجوریه.اندروید 6 هم استفاده میشه. از این استفاده میشه.
اینجوری استفاده میشن.اندروید 6 پرمیشن دیگه هم میخواد؟
public static final String DIR_SDCARD = Environment.getExternalStorageDirectory().getAbsolutePath(); public static final String DIR_APP = DIR_SDCARD + "/mashin"; public static final String DIR_TEMP = DIR_APP + "/temp"; public static final String DIR_FINAL = DIR_APP + "/final";
new File(DIR_APP).mkdirs(); new File(DIR_TEMP).mkdirs(); new File(DIR_FINAL).mkdirs();
پرمیشن های زیر هم ست شده
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
گرفتن پرمیشن نوشتن در کارت حافظه در اندروید 6 به صورت رانتایم :
int REQUEST_WRITE_EXTERNAL_STORAGE=1;
////...
File storageDir = null;
if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
//RUNTIME PERMISSION Android M
if(PackageManager.PERMISSION_GRANTED==ActivityCompat.checkSelfPermission(context,Manifest.permission.WRITE_EXTERNAL_STORAGE)){
storageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), "myPhoto");
}else{
requestPermission(context);
}
}
return storageDir;
////...
private static void requestPermission(final Context context){
if(ActivityCompat.shouldShowRequestPermissionRationale((Activity)context,Manifest.permission.WRITE_EXTERNAL_STORAGE)) {
// Provide an additional rationale to the user if the permission was not granted
// and the user would benefit from additional context for the use of the permission.
// For example if the user has previously denied the permission.
new AlertDialog.Builder(context)
.setMessage(context.getResources().getString(R.string.permission_storage))
.setPositiveButton(R.string.tamam, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
ActivityCompat.requestPermissions((Activity) context,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_EXTERNAL_STORAGE);
}
}).show();
}else {
// permission has not been granted yet. Request it directly.
ActivityCompat.requestPermissions((Activity)context,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_WRITE_EXTERNAL_STORAGE);
}
}
///...
@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
switch (requestCode) {
case UtilityPhotoController.REQUEST_WRITE_EXTERNAL_STORAGE: {
if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Toast.makeText(context,
getResources().getString(R.string.permission_storage_success),
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context,
getResources().getString(R.string.permission_storage_failure),
Toast.LENGTH_SHORT).show();
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
}
return;
}
}
}
عجبا! سوال میپرسید وقتی جواب میدیم هم اسپم می کنید!!!! کجای پاسخ من اسپم بود؟ تقصیر خودمه که هر وقت کسی سوال پرسید بی هیچ چشم داشتی جواب دادم
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .