首页 > 解决方案 > 使用作用域 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();
}

标签: javaandroidscoped-storage

解决方案


推荐阅读