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

时间:2016-05-12 10:52:35

标签: android arraylist uri

尝试与我的应用共享单个或多个文件时遇到此问题。当我选择单个文件并点击共享图标并选择我的应用程序时,我得到文件的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 个答案:

答案 0 :(得分:1)

试试这个

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

答案 1 :(得分: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;
    }