java - 使用作用域 Storage MediaStore 在应用程序中共享意图问题
问题描述
我正在使用 Scoped Storage MediaStore 迁移我的应用程序以在 android 10/11 上运行。该文件不与任何其他应用程序共享。
使用以下代码共享音频文件,但未共享。
final String relativeLocation = Environment.DIRECTORY_MUSIC + File.separator +pref.getGalleryName() +File.separator +fileName;
//obtaining the uri to the pdf report when creating it
Uri pathToMp3 = null;
int EmailRequestCode = 200;
ContentResolver contentresolver = _context.getContentResolver();
ContentValues contentvalues = new ContentValues();
contentvalues.put(MediaStore.MediaColumns.DISPLAY_NAME, fileName);
contentvalues.put(MediaStore.MediaColumns.MIME_TYPE, "audio/mp3");
contentvalues.put(MediaStore.MediaColumns.RELATIVE_PATH, Environment.DIRECTORY_DOWNLOADS + File.separator + pref.getGalleryName());
contentvalues.put(MediaStore.MediaColumns.IS_PENDING, 0);
pathToMp3 = contentresolver.insert(MediaStore.Files.getContentUri("external"), contentvalues);
//contentresolver.update(pathToMp3, contentvalues, null, null);
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.setType("audio/mp3");
emailIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
emailIntent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
emailIntent.putExtra(Intent.EXTRA_STREAM, pathToMp3);
try{
if (emailIntent.resolveActivity(_context.getPackageManager()) != null) {
//startActivityForResult(emailIntent, EmailRequestCode);
_context.startActivity(Intent.createChooser(emailIntent
, "Share audio"
));
}
}
catch(android.content.ActivityNotFoundException e){
Toast.makeText(_context, "No email client available", Toast.LENGTH_SHORT).show();
}
解决方案
推荐阅读
- java - 如何为上传的内容设置任意版本号?
- java - java.lang.IllegalStateException:没有为范围名称“请求”注册范围
- angular - 将 canActivate Angular 与 AngularFirebase2 一起使用
- r - 识别向量中的 NA 集
- python - 为什么pickle加载numpy数组比numpy快得多?
- r - R中的对象何时修改到位?
- javascript - 如何使用Angular6在基于动态计算器的结果输入字段中绑定动态公式结果?
- javascript - 关于 JavaScript 中函数格式的问题
- marklogic - MarkLogic - 使用 Javascript 将变量传递给 XML
- java - 在 Gradle 任务中拉取和运行依赖项