24

今晚,我目前在做一些我认为很简单的事情时遇到了问题……在 /mnt/sdcard 中创建一个文件夹。

我设置了以下权限:

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

Main.java有以下内容来制作文件夹:

public class Main extends TabActivity {
    static int index = 1;
    private static final String TAG = "Main";       

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        File folder = new File(Environment.getExternalStorageDirectory () + "/tallgrass/images");
        boolean success = false;
        if(!folder.exists()){
            success = folder.mkdir();
        }
        if (!success){ 
            Log.d(TAG,"Folder not created.");
        }
        else{
            Log.d(TAG,"Folder created!");
        }
    }

我得到“创建的文件夹!” 我的日志中有消息,但是当我同时检查两者时/mnt/sdcard/sdcard没有一个文件夹。我试过打电话:

Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())

它返回true。我只是无法弄清楚这一点,因为所有迹象都表明它应该起作用。我还尝试过将手机与 PC 断开连接,以防 SD 卡正在安装或我目前正在使用手机而不是模拟器进行开发。说到这,debuggable可能true会阻止它制作文件夹吗?

谢谢!

4

3 回答 3

42

目录是否/mnt/sdcard/tallgrass/存在?(我猜不是,但你永远不知道。)

File.mkdirs()方法将创建所有需要的目录;mkdir()只会创建路径名中的最后一个目录。

于 2011-05-11T02:38:48.723 回答
0

检查您将权限放在哪里,他们必须以这种方式进行:

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
 package="edu.una.info.app">
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
   <uses-permission android:name="android.permission.CALL_PHONE" />

<application android:allowBackup="true"
    android:label="@string/app_name"
    android:icon="@drawable/ic_launcher"
    android:theme="@style/AppTheme">

    <activity
        android:name="edu.una.info.SplashScreenActivity"
于 2014-05-13T01:57:40.947 回答
0

尝试使用不同的设备。我的模拟器设备存在问题,但是当我连接我的Oneplus 5T时,它创建了一个文件夹(我的 Oneplus 没有外部 MicroSD)。

但与此同时,我的模拟器(Pixel 3)根本没有创建文件夹。

至少权限都很好。

于 2020-05-16T04:40:20.157 回答