分享选项不在Marshmallow工作

时间:2016-12-16 16:09:24

标签: android

我写了这个共享代码,因为我的旧代码不在marshmallow工作。我明显搞砸了,没有结果。如果有任何其他简单的方法从网址分享图像,请告诉我。

public void share(View view){
    niv1 = (NetworkImageView) findViewById(R.id.imgNetwork);
    File file = getLocalBitmapFile(niv1);
    Uri bmpUrii = FileProvider.getUriForFile(this, "com.myfileprovider", file);
    Intent shareIntent = new Intent(Intent.ACTION_SEND);
    shareIntent.setType("image/*");
    shareIntent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
    shareIntent.putExtra(Intent.EXTRA_STREAM, bmpUrii);
    shareIntent.putExtra(Intent.EXTRA_SUBJECT, "share");
    shareIntent.putExtra(Intent.EXTRA_TEXT, Datas.Address);
    startActivity(Intent.createChooser(shareIntent, "Share Image"));
        } 

 public File getLocalBitmapFile(NetworkImageView imageView) {

    Drawable drawable = imageView.getDrawable();
    Bitmap bmp = null;
    if (drawable instanceof BitmapDrawable) {
        bmp = ((BitmapDrawable) imageView.getDrawable()).getBitmap();
    } else {
        return null;
    }
    File bmpUri = null;

        File file = new File(Environment.getExternalStoragePublicDirectory(
                Environment.DIRECTORY_DOWNLOADS), "share_image_" + System.currentTimeMillis() + ".png");
        file.getParentFile().mkdirs();
    FileOutputStream out = null;
    try {
        out = new FileOutputStream(file);
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }
    bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
    try {
        out.close();
    } catch (IOException e) {
        e.printStackTrace();
    }
    return file;
}

1 个答案:

答案 0 :(得分:1)

Uri fileUri = FileProvider.getUriForFile(this, "com.myfileprovider", new File(String.valueOf(niv1)))

niv1NetworkImageView。它不是文件路径,也不指向文件路径。

根据您的XML元数据,将new File(String.valueOf(niv1))替换为File对象,该对象指向由FileProvider管理的位置中的文件。 This sample app说明了使用FileProvider,但在这种情况下,它适用于PDF和ACTION_VIEW