2016-12-29 50 views
0

我似乎在創建LOLLIPOP文件夾時出現問題,儘管代碼對以前版本的工作很好 在日誌轉換中沒有錯誤,它根本不會創建文件夾幫助android沒有在LOLLIPOP中創建文件夾

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



private static Uri getOutputMediaFileUri(int type){ 
    return Uri.fromFile(getOutputMediaFile(type)); 
} 

private static File getOutputMediaFile(int type){ 
    File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
      Environment.DIRECTORY_MOVIES), "reelyChat/vids"); 

    if(!mediaStorageDir.exists()){ 
     if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP){ 
      mediaStorageDir.mkdirs(); 
      try { 
       mediaStorageDir.createNewFile(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     }else{ 
      if(!mediaStorageDir.mkdirs()){ 
       Log.d("reelyChat", "failed to create directory"); 
       return null; 
      } 
     } 

    } 

    String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); 
    File mediaFile; 
    if(type == MEDIA_TYPE_VIDEO){ 
     vid_name = "RC_"+my_user_id+"_profile.mp4"; 
     mediaFile = new File(mediaStorageDir.getPath() + File.separator + vid_name); 
    }else{ 
     return null; 
    } 

    return mediaFile; 
} 
+0

您的代碼適用於我在棉花糖上,您是否授予棉花糖所需的運行時權限? –

+0

如果@SteveM的建議不起作用,請查看以下其他建議:http://stackoverflow.com/questions/4062357/mkdirs-returns-false-for-directory-on-sd-card-while-the- parent-directory-is-writ – yakobom

+0

@Steve M是權限設置它只是不創建lollypop中的文件,但我還沒有嘗試棉花糖,但所有其他以前的版本工作tho – user2692997

回答

0

您需要在運行時寫入權限。

//就調用這個函數

getWirtePermissionAndCreateDir();

private void getWirtePermissionAndCreateDir() { 
     if (Build.VERSION.SDK_INT < 23) {    
      createDir(); 

     } else { 
      final String[] PERMISSIONS_STORAGE = {Manifest.permission.WRITE_EXTERNAL_STORAGE}; 
      //Asking request Permissions 
      ActivityCompat.requestPermissions(mActivity, 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) { 
      createDir(); 
     } else { 
      Toast.makeText(mActivity, "You don't assign permission.", Toast.LENGTH_LONG).show(); 
     } 
    } 

    private void createDir(){ 
     File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
     Environment.DIRECTORY_MOVIES), "reelyChat/vids"); 
     mediaStorageDir.mkdirs(); 
    } 
0

它看起來像你有權限,但不是在運行時。運行在棉花糖或以上的設備需要在運行時獲得權限。 欲瞭解更多信息,請訪問Developer Site

相關問題