0

以下のコードは、マシュマロ以前のデバイスでは正常に動作していますが、マシュマロではうまく動作していません。Android 6.0のファイルまたはディレクトリはありません

これらはここでマニフェスト

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

の権限ですが、私は手動で記憶許可

ここソリューションです許可すると、コード

public void saveImageToSDCard(Bitmap bitmap) { 
    File myDir = new File(
      Environment 
        .getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), 
      pref.getGalleryName()); 

    myDir.mkdirs(); 
    Random generator = new Random(); 
    int n = 10000; 
    n = generator.nextInt(n); 
    String fname = "Wallpaper-" + n + ".jpg"; 
    File file = new File(myDir, fname); 
    if (file.exists()) 
     file.delete(); 
    try { 
     FileOutputStream out = new FileOutputStream(file); 
     bitmap.compress(Bitmap.CompressFormat.JPEG, 90, out); 
     out.flush(); 
     out.close(); 
     Uri uri = getImageContentUri(_context,file); 

     Log.d(TAG, "Wallpaper saved to: " + file.getAbsolutePath()); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

と同じコードが動作ですNitesh Pareekによって与えられる。

private boolean hasPermissions(Context context, String[] permissions) { 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
     for (String permission : permissions) { 
      if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 
String[] PERMISSIONS = new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE}; 

    if (!hasPermissions(this, PERMISSIONS)) { 
     ActivityCompat.requestPermissions(this, PERMISSIONS, 11); 
     return; 
    } 
+1

はここhttps://developer.android.com/training/permissions/requesting.html使用を参照してください* *アンドロイド6.0のために '実行時間Permission'を使用してください。 –

答えて

関連する問題