2016-11-21 2 views
1

У меня есть задача сохранить растровое изображение во внутреннем хранилище. Я старался всеми способами. Я не могу получить требуемый результат. Папка создана и сохранена на внутреннем устройстве в папке данные/пользователь/0/данные/~~. --triedКак создать папку во внутреннем хранилище, например WhatsApp или Allo?

File mediaFile = new File(c.getExternalCacheDir(), "/MaherSaad"); 

работал и создать папку в кэше -. Android/данные/com.myapp ~/кэш

я хочу создать папку и выглядеть, как тот

внутренней памяти/Myapp/NewFolder

enter image description here

ответ

4

наконец нашел решение создания папки вне папки данных

просто

File mFolder = new File(Environment.getExternalStorageDirectory(), "Folder_Name"); 
      if (!mFolder.exists()) { 
       boolean b = mFolder.mkdirs(); 

      } 

ошибки не обрабатывающий Разрешение на время работы код просто ...

String TAG = "Permsission : "; 
     if (Build.VERSION.SDK_INT >= 23) { 
      if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE) 
        == PackageManager.PERMISSION_GRANTED) { 
       Log.v(TAG,"Permission is granted"); 
       return true; 
      } else { 

       Log.v(TAG,"Permission is revoked"); 
       ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1); 
       return false; 
      } 
     } 
     else { //permission is automatically granted on sdk<23 upon installation 
      Log.v(TAG,"Permission is granted"); 
      return true; 
     } 

разрешение ручка

@Override 
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
     super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
     String TAG = "Permsission : "; 
     if(grantResults[0]== PackageManager.PERMISSION_GRANTED){ 
      Log.v(TAG,"Permission: "+permissions[0]+ "was "+grantResults[0]); 
      //resume tasks needing this permission 
      //Define the path you want 
      File mFolder = new File(Environment.getExternalStorageDirectory(), "Folder_Name"); 
      if (!mFolder.exists()) { 
       boolean b = mFolder.mkdirs(); 

      } 
     } 
    } 
0

попробовать эту функцию, я t сохраняет файл txt СОЗДАНИЕ НОВОЙ ПАПКИ в вашем внутреннем хранилище (если он еще не существует). Не забудьте дать все разрешения в файл манифеста

public void saveData(String data){ 
    File root_text = Environment.getExternalStorageDirectory(); 
    try{ File folder = new File(Environment.getExternalStorageDirectory() + "/TESTEXAMPLE"); 
     boolean success = true; 
     if (!folder.exists()) { 
      success = folder.mkdir(); 
     } 
     BufferedWriter fwv = new BufferedWriter(new FileWriter(new File("/sdcard/TESTEXAMPLE/SavedData.txt"), false)); 
     if (root_text.canWrite()) { 
      fwv.write(data); 
      fwv.close(); 
     } 
    }catch (Exception e){ 
     Log.e("MODEL", "ERRORE: " + e.toString()); 
    } 
} 
+0

ERRORE: java.io.FileNotFoundException: /sdcard/TESTEXAMPLE/SavedData.txt: не открыть не удалось: ENOENT (Нет такого файла или каталога) --My устройства не имеют карт SD .. это влияет? –

+0

очень странно. на самом деле, с этим кодом я сохраняю внутри внутреннего хранилища, а не SDK. Вы просили разрешения в манифесте?

+0

yes Пытался использовать ** Environment.getExternalStorageDirectory() ** раньше не работал для меня –

Смежные вопросы