【问题标题】:Lenovo not allowing to create folder in sd card联想不允许在 SD 卡中创建文件夹
【发布时间】:2017-03-12 04:52:10
【问题描述】:

我正在尝试在 android sd 卡中创建一个文件夹...为此,我在清单文件中添加了权限,这是我的代码..

public void createFile(View view)
    {
        String state= Environment.getExternalStorageState();
        if(Environment.MEDIA_MOUNTED.equals(state)){
            File wallpaperDirectory = new File("/sdcard/Wallpaper/");
            res=wallpaperDirectory.mkdir()
            if(res){
                Toast.makeText(this, "Success", Toast.LENGTH_SHORT).show();
            }
            else{
                Toast.makeText(this, "Failed", Toast.LENGTH_SHORT).show();
            }
        }
        else{
            Toast.makeText(this, "Make sure that you have a memory card mounted...", Toast.LENGTH_SHORT).show();
        }
    }

当我在 kitkat 模拟器中运行相同的代码时,它的创建文件夹但它总是说在 lenovo 中失败...提前谢谢...

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="bk.acs">
    <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">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

</manifest>

【问题讨论】:

  • 你的设备里有sd卡吗
  • 是的我有......
  • 可以显示你的清单,请告诉你的操作系统版本
  • 我正在牛轧糖兄弟中进行测试..我更新了清单,请查看
  • @bharath 看看我在下面的回答中所说的话。由于您在牛轧糖中对其进行测试,因此您必须在运行时请求许可。否则将无法正常工作

标签: android directory


【解决方案1】:

您不应该在 Android 中硬编码文件路径。 /sdcard/ 不适用于所有 Android 设备。

请改用Environment.getExternalStorageDirectory()

方法如下:

String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
    File wallpaperDirectory = new File(Environment.getExternalStorageDirectory(), "Wallpaper");
    if(!wallpaperDirectory.exist()) {
        wallpaperDirectory.mkdir();
        ...
    }
}

另外,如果您在 6.0+ 的 Android 版本上进行测试,仅在 AndroidManifest.xml 中声明权限是不够的。你需要request permission during run time。这是它可能在 KitKat 上运行但在较新的 Android 版本上运行的另一个原因。

【讨论】:

  • 兄弟我成功创建了目录,但在我的电脑上看不到它..如何将其公开?
猜你喜欢
  • 2012-09-20
  • 2018-05-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-18
  • 1970-01-01
  • 2020-03-05
  • 1970-01-01
  • 2014-01-22
相关资源
最近更新 更多