android.net.Uri$HierarchicalUri无法转换为java.util.ArrayList

3

我在尝试使用我的应用程序共享单个或多个文件时遇到了问题。当我选择一个单独的文件并点击共享图标并选择我的应用程序时,我会得到该文件的URI,而当我选择多个文件时,我会得到一个URI的ArrayList。以下是我的代码。

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
   // AuthDetails.initiate(this);
    setContentView(R.layout.activity_pdfupload);

    ArrayList<String> fileUriList= (ArrayList<String>) getIntent().getExtras().get(Intent.EXTRA_STREAM);
    Log.e("urilist", fileUriList.toString());


    init();

    btCancel.setOnClickListener(cancelUploadListener);
    btUploadPDF.setOnClickListener(uploadPdfListener);
}

我遇到了以下异常。
Caused by: java.lang.ClassCastException: android.net.Uri$HierarchicalUri cannot be cast to java.util.ArrayList
                                                                at com.example.newActivity.activities.PDFUploadActivity.onCreate(PDFUploadActivity.java:44)

有没有一种方法可以管理单选和多选场景?
2个回答

1

试试这个

ArrayList<Uri> fileUriList = intent.getParcelableArrayListExtra(Intent.EXTRA_STREAM);
Log.e("urilist", fileUriList.toString());

0

我之前遇到过类似的问题,以下是你可以采取的解决方法。

    String action = getIntent().getAction();
    intent = new Intent(this, MyActivityToBeOpen.class);
    if (action == null) {
        action = Intent.ACTION_SEND;
    }

    switch (action) {
        case Intent.ACTION_SEND:
            intent.putExtra(Intent.EXTRA_STREAM, (Parcelable) getIntent().getParcelableExtra(Intent.EXTRA_STREAM));
            break;

        case Intent.ACTION_SEND_MULTIPLE:
            intent.putExtra(Intent.EXTRA_STREAM, getIntent().getParcelableArrayListExtra(Intent.EXTRA_STREAM));
            break;
    }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接