加载同一应用程序以共享多个文件

问题描述 投票:0回答:1

我正在共享代码中的两种文件,zip 文件和 3gp 文件,我对这两种文件使用相同的代码以及我在 Manifest 和 xml sharepaths 文件中定义的相同 FileProvider。

共享操作每次都会显示zip文件的选择,但是音频文件,从我第一次测试将它们共享到google驱动器时,没有弹出任何选择,每次我想共享音频文件时Google驱动器应用程序都会执行,这很烦人用户必须始终获得选择。

private Intent setShareIntent(ArrayList<Uri> uris){
    Intent shareIntent = new Intent(Intent.ACTION_SEND_MULTIPLE);
    shareIntent.setType("audio/3gpp");
    shareIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, uris);
    shareIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    return shareIntent;
}
private ArrayList<Uri> getChekcedRecordsUris(){
    SparseBooleanArray sba = pRecordsList.getCheckedItemPositions();
    int position;
    ArrayList<Uri> archivesUris = new ArrayList<Uri>();
    for(int i = 0; i< sba.size();i++){
        if(sba.valueAt(i)){
            position = sba.keyAt(i);
            File selectedArchive = pRecordsFilesAdapter.getItem(position);
            archivesUris.add(FileProvider.getUriForFile(getBaseContext(), "ma.altaiir.app.appfileProvider", selectedArchive));
        }
    }
    return archivesUris;
}
private void shareCheckedItems(){
    Intent shareIntent = setShareIntent(getChekcedRecordsUris());
    if(shareIntent.resolveActivity(FilesActivity.this.getPackageManager()) != null){
        FilesActivity.this.startActivity(shareIntent);
    }else{
        Toast.makeText(getBaseContext(), MyApplication.getMyAppContext().getResources().getString(R.string.toast_no_intent_app_chooser),Toast.LENGTH_SHORT).show();
    }
}
android android-intent android-studio-2.2 android-sharing
1个回答
0
投票

我终于发现了错误,它来自我用于3gp文件的mime类型,女巫基本上是视频容器,所以我必须使用audio/*或video/3gp。

audio/* 解决了我的问题,现在的目的是为用户提供一个选择器。

© www.soinside.com 2019 - 2024. All rights reserved.