0
  • 最佳答案
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    intent.setDataAndType(uri,"image/*");
    startActivity(intent);
    


    大概是这样一个代码


    1153952789488054272  评论     打赏       拉大锯
    • 臭皮匠  回复 @拉大锯
      在android7以后的 uri不需要用 provider去修饰么
      臭皮匠 2021-11-16 09:14   回复 1382711465131241472
    • 拉大锯  回复 @臭皮匠
      不知道,我记不住呀,关于内容提供者看源码就好。
      拉大锯 2021-11-16 09:56   回复 1153952789488054272
  • 最终根据康师傅的进行修改和判断 大致分为这种情况

    String type = CommonUtils.getMIMEType(file);  // image/jpeg
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_VIEW);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.N){
        Uri uri = FileProvider.getUriForFile(this,BuildConfig.APPLICATION_ID+".fileprovider",file);
        intent.setDataAndType(uri,type);
    }else {
        intent.setDataAndType(/* uri */Uri.fromFile(file), type);
    }
    // 跳转
    if (intent.resolveActivity(this.getPackageManager()) != null) {
        startActivity(intent);
    } else {
        CommonUtils.showToast(this,
                this.getString(R.string.cannot_open_this_type_file) + filename);
    }
    
    1382711465131241472  评论     打赏       臭皮匠
    • 宝们 我想要的是用uri打开手机内对应的相册内容 似乎不是image/*打开所有相册

      1382711465131241472  评论     打赏       臭皮匠
      • 为什么要用 内容提供者呢

        直接

        Intent intent = new Intent(Intent.ACTION_PICK, null);
        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
        startActivityForResult(intent, 2);
        

        然后onActivityResult


        1231137268748521472  评论     打赏       码划云
        • 臭皮匠  回复 @码划云
          这是打开相册选择的图片 俺认识 俺前几天还在用
          臭皮匠 2021-11-16 09:18   回复 1382711465131241472
      • 这用什么手机测的,手机还是模拟器?手机是android 几

        1302969105866940416  评论     打赏       RUOQ
        • 臭皮匠  回复 @RUOQ
          android10呢 荣耀X8
          臭皮匠 2021-11-16 09:10   回复 1382711465131241472
      • intent.setAction(Intent.ACTION_VIEW);//Intent.ACTION_PICK  //ACTION_VIEW
        

        暂时发现是这条Action的问题 明天再卷了 球球大佬们看看

        1382711465131241472  评论     打赏       臭皮匠
        • 你打开的是一个activity,我没看懂,你这是啥流程。

          1153952789488054272  评论     打赏       拉大锯
          • 臭皮匠  回复 @拉大锯
            这个开启原生的相册 应该是这么理解 不需要回传信息 类似于打开相册一样?
            臭皮匠 2021-11-15 18:11   回复 1382711465131241472
        • 这个内容提供者是你自己的?

          1153952789488054272  评论     打赏       拉大锯
          • 臭皮匠  回复 @拉大锯
            是我自己
            臭皮匠 2021-11-15 18:11   回复 1382711465131241472
          • 拉大锯  回复 @臭皮匠
            我这么回吧,我不管你这个了。看这个名称看起来像官方的,一般开发不会这么命名。如果是你想预览图片,Build.VERSION.SDK_INT >= Build.VERSION_CODES.N,这个条件成立吗?我在另外回答你吧。
            拉大锯 2021-11-15 19:33   回复 1153952789488054272
          • 臭皮匠  回复 @拉大锯
            成立的 康师傅
            臭皮匠 2021-11-16 09:09   回复 1382711465131241472
        相关问题
        幻影~ · 提问
        2024-04-13 20:13 10 2
        幻影~ · 找工作
        2024-04-07 10:44 15 2
        幻影~ · 问题
        2024-03-31 17:20 7 2
        TONYGFX · AOSP
        2024-03-28 17:11 4 2