2016-01-26 2 views
0

Мне не удается создать каталог во внешней папке хранилища. Я создал новый проект, изменил манифест и добавил код, как показано ниже. Любая помощь будет принята с благодарностью. Я обновил сообщение, чтобы включить, что приведенный ниже код не работает. Единственное, что я могу думать, это проблема эмулятора. Я использую Nexis API 32 x64.Невозможно создать внешний каталог

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest package="com.us.foobar" 
      xmlns:android="http://schemas.android.com/apk/res/android"> 

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

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity 
      android:name=".MainActivity" 
      android:label="@string/app_name" 
      android:theme="@style/AppTheme.NoActionBar"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN"/> 

       <category android:name="android.intent.category.LAUNCHER"/> 
      </intent-filter> 
     </activity> 
    </application> 
</manifest> 

Источник:

public void mkdir() throws Exception 
{ 
    String root = Environment.getExternalStorageDirectory().getAbsolutePath(); 
    String dir = root + "/Foobar"; 

    File file = new File(dir); 
    if (!file.exists()) 
    { 
     if (!file.mkdirs()) 
     { 
      throw new Exception("Unable to create application data directory.\r\n\r\nDirectory: " + dir); 
     } 
    } 
} 
+0

'общественного MainActivity() бросает Exception'm ??? Лучше удалите это. Где находится onCreate()? Это даже компилируется? Какие у вас ошибки? – greenapps

+0

Вы не отвечаете на мои вопросы. Почему ты не серьезно? Ваш код не имеет смысла. – greenapps

ответ

0

Я называю ту же функцию на OnCreate и работает отлично. Посмотрите на мой код:

public class MainActivity extends AppCompatActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     test(); 
    } 

    public void test() { 
     String root = Environment.getExternalStorageDirectory().getAbsolutePath(); 
     String dir = root + "/Foobar"; 

     File file = new File(dir); 
     if (!file.exists()) { 
      if (!file.mkdirs()) { 
       Log.e("Error", "Unable to create application data directory.\r\n\r\nDirectory: " + dir); 
      } 
     } 
    } 
} 
+0

Вы серьезно? Ваша MainActivity создается при запуске ОС. Но вопрос был в том, где был вызван метод MainActivity(). Кто бы назвал это? У вас действительно есть функция с этим именем? Зачем? Смущать людей? Составляет ли это мой вопрос. – greenapps

+0

Ok @greenapps ваши комментарии имеют смысл. Я удаляю последнее утверждение своего ответа, чтобы избежать путаницы;). –

+0

??? Мой комментарий был для OP. Не для тебя. – greenapps

0

Использование API 23 Я должен был просить разрешения до записи в файловую систему следующим образом:

ActivityCompat.requestPermissions(
        this, 
        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
        REQUEST_EXTERNAL_STORAGE 
      ); 
Смежные вопросы