Android : Share drawable resource with other apps

前端 未结 3 1941
有刺的猬
有刺的猬 2021-01-25 02:36

In my activity I have an ImageView. I want ,when user click on it, a dialog opens (like intent dialogs) that show list of apps which can open image than user can choose a app an

相关标签:
3条回答
  • 2021-01-25 03:07
    Create a chooser by using the following code. You can add it in the part where you say imageview.setonclicklistener(). 
    Intent intent = new Intent();
    // Show only images, no videos or anything else
    intent.setType("image/*");
    intent.setAction(Intent.ACTION_GET_CONTENT);
    // Always show the chooser (if there are multiple options available)
    startActivityForResult(Intent.createChooser(intent, "Select Picture"), 1);
    
    0 讨论(0)
  • 2021-01-25 03:16

    You have to startActivity using intent of type Intent.ACTION_VIEW-

                Intent intent = new Intent();
                intent.setAction(Intent.ACTION_VIEW);
                intent.setDataAndType(<your_image_uri>, "image/*");
                startActivity(intent); 
    
    0 讨论(0)
  • 2021-01-25 03:24

    You can't pass a bitmap to an intent.

    From what I see you want to share a drawable from your resources. So first you have to convert the drawable to a bitmap. And then You have to save the bitmap to the external memory as a file and then get a uri for that file using Uri.fromFile(new File(pathToTheSavedPicture)) and pass that uri to the intent like this.

    shareDrawable(this, R.drawable.dish, "myfilename");
    
    public void shareDrawable(Context context,int resourceId,String fileName) {
        try {
            //convert drawable resource to bitmap
            Bitmap bitmap = BitmapFactory.decodeResource(context.getResources(), resourceId);
    
            //save bitmap to app cache folder
            File outputFile = new File(context.getCacheDir(), fileName + ".png");
            FileOutputStream outPutStream = new FileOutputStream(outputFile);
            bitmap.compress(CompressFormat.PNG, 100, outPutStream);
            outPutStream.flush();
            outPutStream.close();
            outputFile.setReadable(true, false);
    
            //share file
            Intent shareIntent = new Intent(android.content.Intent.ACTION_SEND);
            shareIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(outputFile));
            shareIntent.setType("image/png");
            context.startActivity(shareIntent);
        } 
        catch (Exception e) { Toast.makeText(context, "error", Toast.LENGTH_LONG).show();
        }
    }
    
    0 讨论(0)
提交回复
热议问题