2013-08-25 3 views
0

Я стараюсь следовать Saving Files ссылка. Почему getExternalStoragePublicDirectory и getExternalFilesDirне поддерживается на уровне API 4?Почему getExternalStoragePublicDirectory и getExternalFilesDir не поддерживаются на уровне API 4?

Прямо сейчас я использую некоторые из их примеров приложений, которые поддерживают уровень API 4 я использую следующий код:

public File getAlbumStorageDir(String albumName) { 
    // Get the directory for the user's public pictures directory. 
    File file = new File(Environment.getExternalStoragePublicDirectory(
     Environment.DIRECTORY_PICTURES), albumName); 
    if (!file.mkdirs()) { 
     //Log.e(LOG_TAG, "Directory not created"); 
     System.out.println("Directory not created"); 
    } 
    return file; 
} 

И я получаю следующее сообщение об ошибке: Call requires API level 8 (current min is 4): android.os.Environment#getExternalStoragePublicDirectory.

Есть ли что-нибудь еще, что я мог бы использовать для 4?

+0

Зачем вам поддерживать API 4? Просто переместите minSdkVersion до API 8. – kcoppock

+0

в будущем я буду работать с API 7 как мой самый низкий, но теперь, как практика и для обучения, я работаю с уровнем api 4 –

+2

Это плохой учебный курс, ИМО. Никто не на API 4, вы просто будете изучать кучу обходных решений, которые не нужны. В настоящее время API 8 является самым дешевым таргетингом. API 4 составляет в среднем 0,1% рынка (http://developer.android.com/about/dashboards/index.html). – kcoppock

ответ

0

мне удалось решить вот решение:

Оба getExternalStoragePublicDirectory и getExternalFilesDir поддерживаются только от уровня апи 8 и выше, так что я должен был использовать что-то альтернатива:

File sdCardRoot = Environment.getExternalStorageDirectory();// gave me the SDcard path. 

, а затем я только что добавили URL/путь к приложению, как описано в ref

String sdCardDirectory = sdCardRoot + "/Android/data/" + getApplicationContext().getPackageName(); 

Я тогда инициировала ew Класс файла и создал каталоги, необходимые с mkdirs(). а затем я начинаю другой файл класс с новым адресом и создать сам файл вот как это выглядит:

 File file = new File(sdCardDirectory, "files"); 

     if(file.mkdirs() || file.isDirectory()){ 
      System.out.println("works."); 
     } 
     file = new File(file, albumName); 
     try{ 
      if(file.createNewFile()){ 
       System.out.println("File Created"); 
      }else{ 
       System.out.println("File Already Exsists"); 
      } 
     }catch (IOException ExceptionS) { 
      System.out.println("Encountered the following Exception: " + ExceptionS); 
     } 

     if (!file.exists()) { 
      System.out.println("File Does not Exist"); 

     }else{ 
      System.out.println("File Exist!"); 

     } 

Я довольно уверен, что есть лучший способ сделать это, однако я новичок в андроид развития.

Надежды, которые помогают кому угодно.

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