रूप @CommonsWare उत्तर दिया, वहाँ है रन-टाइम अनुमति पर एंड्रॉयड एम अवधारणा पूछ, इसलिए नए दृष्टिकोण में, जब स्थापित करने अनुमतियाँ पूछा नहीं कर रहे हैं ऐप लेकिन फोन की विशिष्ट सुविधा का उपयोग करने का प्रयास करते समय, जो रन-टाइम पर अनुमति का अनुरोध करता है। बाद में उपयोगकर्ता phone settings->app->yourapp->permissions
से भी अनुमति अक्षम कर सकता है। आप की तरह इस काम के लिए अनुमति प्राप्त करना होगा
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;
}
}
}
स्रोत
2015-08-26 13:00:33
"storeDir रिटर्न" file: /// भंडारण/नकल करते/0/चित्र/MyPhoto/फ़ाइल "एंड्रॉयड 6 और एंड्रॉयड 6 पर यह रिटर्न नीचे": /// "" - कि कोड लौटा रहा है ' फाइल 'ऑब्जेक्ट्स, स्ट्रिंग्स नहीं। इसके अलावा, आपका 'targetSdkVersion' क्या है? – CommonsWare
संपादित प्रश्न –
यह वास्तव में –