2017-02-28 177 views
0

我對android緩存有些疑惑,在運行時android app cache需要外部存儲的讀寫權限與否。任何人都可以幫助我解決這個困惑。例如,Android應用緩存需要的存儲權限

File tempFile = File.createTempFile("img", ".png", getExternalCacheDir()); 
String imgPath = tempFile.getAbsolutePath(); 

回答

0

試試這個,

存儲許可

private static final int REQUEST_STORAGE = 112; 



    if (Build.VERSION.SDK_INT >= 23) { 
     String[] PERMISSIONS = {android.Manifest.permission.WRITE_EXTERNAL_STORAGE,android.Manifest.permission.READ_EXTERNAL_STORAGE}; 
     if (!hasPermissions(mContext, PERMISSIONS)) { 
      ActivityCompat.requestPermissions((Activity) mContext, PERMISSIONS, REQUEST_STORAGE); 
     } else { 

      File tempFile = File.createTempFile("img", ".png", getExternalCacheDir()); 
      imgPath = tempFile.getAbsolutePath(); 
     } 
    } else { 

     File tempFile = File.createTempFile("img", ".png", getExternalCacheDir()); 
     imgPath = tempFile.getAbsolutePath(); 
    } 

獲取權限結果

@Override 
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     switch (requestCode) { 
      case REQUEST_STORAGE: { 
       if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 

        File tempFile = File.createTempFile("img", ".png", getExternalCacheDir()); 
        imgPath = tempFile.getAbsolutePath(); 
       } 
      } 
     } 
    } 

的棉花糖檢查權限

private static boolean hasPermissions(Context context, String... permissions) { 
     if (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; 
    } 
0

你必須在運行時https://developer.android.com/training/permissions/requesting.html,例徵得同意,

public void requestPermissionForExternalStorage() { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(activity, Manifest.permission.WRITE_EXTERNAL_STORAGE)) { 
      Toast.makeText(activity, "External Storage permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show(); 
     } else { 
      ActivityCompat.requestPermissions(activity, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, EXTERNAL_STORAGE_PERMISSION_REQUEST_CODE); 
     } 
}