Java API 29中的AndroidStudio getExternalStoragePublicDirectory

Java API 29中的AndroidStudio getExternalStoragePublicDirectory,java,android,Java,Android,在API 29中,getExternalStoragePublicDirectory被弃用,因此我必须找到将以下代码转换为API 29的方法 String pathSave = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + new StringBuilder("/GroupProjectRecord_")

在API 29中,getExternalStoragePublicDirectory被弃用,因此我必须找到将以下代码转换为API 29的方法

String pathSave = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
                            + new StringBuilder("/GroupProjectRecord_")
                            .append(new SimpleDateFormat("dd-MM-yyyy-hh_mm_ss")
                            .format(new Date())).append(".3gp").toString(); 

谢谢你的帮助

如android文档中所述

应用程序可以继续访问存储在共享/外部存储上的内容 通过迁移到诸如 上下文#getExternalFilesDir(字符串)

试试这个方法

public void getFilePath(Context context){
        String path = context.getExternalFilesDir(Environment.DIRECTORY_DOWNLOADS)
                + new StringBuilder("/GroupProjectRecord_")
                .append(new SimpleDateFormat("dd-MM-yyyy-hh_mm_ss")
                        .format(new Date())).append(".3gp").toString();

        Log.d(TAG, "getFilePath: "+path);
    }

在API 29及更高版本中,对应用程序专用存储之外的路径执行任何操作都不会起作用

有关详细信息,请参阅

因此,要保存,您需要执行以下操作:-


//单击保存按钮
公共作废保存(视图){
//请求一个新的文件名
意向意向=新意向(意向.行动\创建\文件);
//仅限于可打开的项目
intent.addCategory(intent.CATEGORY\u可打开);
//设置模拟类型
intent.setType(“文本/普通”);
//建议一个文件名
intent.putExtra(intent.EXTRA_TITLE,“text.txt”);
//启动SAF文件选择器
startActivityForResult(意向,1);
}
@凌驾
ActivityResult上受保护的void(int请求代码、int结果代码、意图结果数据){
super.onActivityResult(请求代码、结果代码、结果数据);
if(requestCode==1&&resultCode==RESULT\u确定){
Log.d(“SAF”,“结果代码1”);
if(resultData!=null){
Uri=resultData.getData();
Log.d(“SAF”,uri.toString());
//现在编写文件
试一试{
包封描述符pfd=
此文件名为.getContentResolver()。
openFileDescriptor(uri,“w”);
//获取要传递给Java IO操作的Java文件描述符
FileDescriptor FileDescriptor=pfd.getFileDescriptor();
//读取输入流
文件输出流文件输出流=
新的FileOutputStream(fileDescriptor);
// .....
}捕获(例外e){
//做一些例外的事情
}
}否则{
Log.d(“SAF”,“无结果”);
}
}
}