2016-01-26 95 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

好的@greenapps您的意见是有道理的。我删除了我的答案的最后一个陈述,以避免混淆;)。 –

+0

???我的评论是针对OP的。不适合你。 – greenapps

0

使用API​​ 23我不得不要求的权限如下写入文件系统之前:

ActivityCompat.requestPermissions(
        this, 
        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 
        REQUEST_EXTERNAL_STORAGE 
      );