微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用共享 Intent 在 android 中共享图像时遇到问题?

如何解决使用共享 Intent 在 android 中共享图像时遇到问题?

我有图像厨房应用程序,因为我可以从服务器加载所有图像,没有任何问题。当我选择其中一个图库时,它将在全屏活动中显示图像。我希望能够全屏共享图像。我使用了以下代码,它适用于 Facebook、Gmail .. 等,但是当我尝试在 WhatsApp 上共享时,模拟器崩溃了。我也得到 SecurityException: Permission Denial: reading androidx.core.content.FileProvider uri content

private static final String TAG = "FullScreen";
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_full_screen);

    StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
    StrictMode.setVmPolicy(builder.build());

   // String imageurl = getIntent().getStringExtra("image_url");
    //Log.e ("Image Url :",""+imageurl);
    img = (ImageView) findViewById(R.id.image_view);

    getIncomingIntent();

    button = (Button) findViewById(R.id.shareme);
    button.setonClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {


            Drawable drawable=img.getDrawable();
            Bitmap bitmap=((BitmapDrawable)drawable).getBitmap();


            try {
                File file = new File(getExternalFilesDir(Environment.DIRECTORY_PICTURES),"share_image_" + ".png");
                Log.e ("Local Image:",""+file);
                FileOutputStream fOut = new FileOutputStream(file);
                bitmap.compress(Bitmap.CompressFormat.JPEG,100,fOut);
                fOut.flush();
                fOut.close();
               // file.setReadable(true,false);
                final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
                Uri photoURI = FileProvider.getUriForFile(getApplicationContext(),BuildConfig.APPLICATION_ID +".provider",file);
                intent.putExtra(Intent.EXTRA_STREAM,photoURI);
                intent.addFlags(Intent.FLAG_GRANT_PERSISTABLE_URI_PERMISSION );
                intent.setType("image/*");
                startActivity(Intent.createChooser(intent,"Share image via"));
            } catch (Exception e) {
                e.printstacktrace();
            }


        }



    });
}

private void getIncomingIntent(){
    if(getIntent().hasExtra("image_url")){
        String imageurl = getIntent().getStringExtra("image_url");
        setimage(imageurl);
       // Log.e ("Image Url from server:",""+imageurl);
    }
}

private void setimage(String imageUrl){
    ImageView image = findViewById(R.id.image_view);
    Glide.with(this)
            .asBitmap()
            .load(imageUrl)
            .into(img);

}

}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。