美文网首页
Android——保存图片到外部存储并进行原生分享

Android——保存图片到外部存储并进行原生分享

作者: 23行者 | 来源:发表于2017-11-02 19:54 被阅读0次

    记录一下Android原生分享

    保存文件

      原生分享使用Intent进行,如果要分享图片,需要将图片保存,获取到路径再进行分享。
      保存图片可以采取保存到相册,SD卡等多种思维。

    //保存到相册
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.download_qr);
    String url = MediaStore.Images.Media.insertImage(getContentResolver(), bitmap, "二维码分享", null);
    
    Uri uri = Uri.parse(url);
    

      然而此种方法实测时会发现在部分小米设备上失败,具体原因目前不知,因此采取保存到外设的方式。
      很多软件会采取直接保存在SD卡根目录的方式,不过这种方案会造成卸载软件也无法跟随删除的垃圾文件,因此采取保存在外部存储的data文件夹,这样会保证删除软件时会一并卸载,并且对权限要求最低。

    //保存到外部存储的data文件夹中
    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.download_qr);
    File fileDir = getExternalFilesDir(null);
    fileDir.mkdirs();
    File file = new File(fileDir, "share.png");
    FileOutputStream outputStream = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, outputStream);
    outputStream.close();
    
    Uri uri = Uri.fromFile(file);
    
    进行分享

      在获取到文件Uri之后,可以进行分享工作,原生分享通过Intent启动所有可支持的软件进行分享。

    Intent intent = new Intent(Intent.ACTION_SEND);
    intent.setType("image/*");
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION);
    //分享到朋友圈的文字,只对朋友圈有效
    intent.putExtra("Kdescription", "朋友圈文字标题");
    //分享的文件
    intent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(file));
    startActivity(Intent.createChooser(intent, "分享"));
    

    相关文章

      网友评论

          本文标题:Android——保存图片到外部存储并进行原生分享

          本文链接:https://www.haomeiwen.com/subject/zoeopxtx.html