Android API29以上在外部存储创建文件夹

    科技2022-07-10  113

    @ANDROID学习

    #自学安卓

    今天按照书上的教程写一个分贝测试仪,要在SD卡根目录下创建一个文件,怎么都不成功,后来发现是Android访问外部存储的权限问题,网上很多教程说在Androidmainfest 中 申请权限 <uses-permission android:name=“android.permission.MOUNT_UNMOUNT_FILESYSTEMS” <uses-permission android:name=“android.permission.WRITE_EXTERNAL_STORAGE” <uses-permission android:name=“android.permission.READ_EXTERNAL_STORAGE” 还有添加 android:requestLegacyExternalStorage=“true”

    但我试了这种方法还是不管用,最后找到这位老兄的教程,解决了问题,特意记录一下,方便和我遇到一样问题的同学查看。 老兄的教程在这里:

    我也把代码在这里贴一下:

    public static String getSDPath(Context context) { File sdDir = null; boolean sdCardExist = Environment.getExternalStorageState().equals( Environment.MEDIA_MOUNTED);// 判断sd卡是否存在 if (sdCardExist) { if (Build.VERSION.SDK_INT>=29){ //Android10之后 sdDir = context.getExternalFilesDir(null); }else { sdDir = Environment.getExternalStorageDirectory();// 获取SD卡根目录 } } else { sdDir = Environment.getRootDirectory();// 获取跟目录 } return sdDir.toString(); }

    这样使用:

    try { mSampleDir=getSDPath(this); //获取手机内存路径 Log.d("SD_Dir", mSampleDir); //用IM+系统当前时间为文件名建立.amr的文件,文件路径为mSampleDir。 mAudiofile = File.createTempFile("IM" + System.currentTimeMillis(), ".amr", new File(mSampleDir)); Log.d("SD_AbsolutePath", mAudiofile.getAbsolutePath()); } catch (IOException e) { Log.e("SD_Err", "sdcard access error"); }

    这种方法不需要申请外部存储的权限,如图: 再次感谢老兄,折腾了一上午。

    Processed: 0.010, SQL: 8