当前位置: 首页 > 面试题库 >

如何通过Messenger发送来自应用的图片?

曹高轩
2023-03-14
问题内容

我想通过Messenger从我的应用发送图像。我一直在寻找,并且找到了适用于WhatsApp的答案。当我尝试将“ com.whatsapp”更改为“
com.facebook.orca”时,它停止工作。这是我的代码:

public void shareImageMessenger() {
            Bitmap adv = BitmapFactory.decodeResource(getResources(), R.drawable.koza);
            Intent share = new Intent(Intent.ACTION_SEND);
            share.setType("image/jpeg");
            ByteArrayOutputStream bytes = new ByteArrayOutputStream();
            adv.compress(Bitmap.CompressFormat.JPEG, 100, bytes);
            File f = new File(Environment.getExternalStorageDirectory()
                    + File.separator + "temporary_file_1.jpg");
            try {
                f.createNewFile();
                new FileOutputStream(f).write(bytes.toByteArray());
            } catch (IOException e) {
                e.printStackTrace();
            }
            share.putExtra(Intent.EXTRA_STREAM,
                    Uri.parse( Environment.getExternalStorageDirectory()+ File.separator+"temporary_file_1.jpg"));
            share.setPackage("com.facebook.orca");
            startActivity(Intent.createChooser(share, "Share Image"));
        }

问题答案:

在此花费大量时间后:

检查是否已授予权限。 然后:

步骤1:在活动中创建想要的图像的ImageView,然后将其转换为无位图

ImageView imageView = findViewById(R.id.image);
Bitmap bitmap = ((BitmapDrawable) imageView.getDrawable()).getBitmap();

//save the image now:
saveImage(bitmap);
//share it
send();

步骤2:将图片存储在内部文件夹中:

private static void saveImage(Bitmap finalBitmap) {

    String root = Environment.getExternalStorageDirectory().getAbsolutePath();
    File myDir = new File(root + "/saved_images");
    Log.i("Directory", "==" + myDir);
    myDir.mkdirs();

    String fname = "Image-test" + ".jpg";
    File file = new File(myDir, fname);
    if (file.exists()) file.delete();
    try {
        FileOutputStream out = new FileOutputStream(file);
        finalBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out);
        out.flush();
        out.close();

    } catch (Exception e) {
        e.printStackTrace();
    }
}

步骤3:传送储存的图片:

public void send() {
    try {
        File myFile = new File("/storage/emulated/0/saved_images/Image-test.jpg");
        MimeTypeMap mime = MimeTypeMap.getSingleton();
        String ext = myFile.getName().substring(myFile.getName().lastIndexOf(".") + 1);
        String type = mime.getMimeTypeFromExtension(ext);
        Intent sharingIntent = new Intent("android.intent.action.SEND");
        sharingIntent.setType(type);
        sharingIntent.putExtra("android.intent.extra.STREAM", Uri.fromFile(myFile));
        startActivity(Intent.createChooser(sharingIntent, "Share using"));
    } catch (Exception e) {
        Toast.makeText(getBaseContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
    }
}

现在,发送后,如果您不想在存储中保存图像,可以将其删除。检查其他链接可以做到这一点。



 类似资料:
  • 通过WhatsApp发送消息 向特定联系人发送Whatsapp消息 但未获成功:( 有谁能帮我解决这个问题。如何通过whatsapp从自己的应用程序中,借助Android的Intent来发送短信和图片?

  • 我正在用facebook信使API在nodejs中构建一个facebook机器人。我试图通过直接上传heroku服务器本身的图像文件(而不是通过URL),从机器人发送图像,但它不起作用。 以下是控制台的错误日志。 调用Send API 400错误请求失败{消息:'(#100)上载的文件数不正确。必须只上载一个文件。',类型:'OAuthException',代码:100,error_subcode

  • 出口到: 角分量法: 一旦我点击导出按钮,我就会得到一个错误:

  • 我有一个在iOS和Android上运行的React本地应用程序,我希望集成AWS SNS。我有一些问题希望有SNS经验的人能回答。 根据我的理解,AWS SNS只是使用GCM(Android)和APNS(iOS)的网关 这是正确的吗? 我是否可以使用RESTful API来实现这一点 或者我需要设置API网关并使用Lambda函数吗 我读到我必须为此集成AWS隐身,或者使用代理服务器。 编辑:我设

  • 问题内容: 我想使用JavaScript中的方法发送一些变量和一个字符串。 我从数据库中获取字符串,然后将其发送到PHP页面。我正在使用一个对象。 问题在于该字符串多次包含该字符,PHP中的数组将其视为多个键。 我试着更换与与功能,但它似乎并没有做任何事情。 有人可以帮忙吗? javascript代码和字符串如下所示: 字符串是: 问题答案: 您可以使用encodeURIComponent()。

  • 在我的应用程序中,如果多个用户使用相同的WiFi连接而不使用TCP,我希望通过WiFi将文件发送给多个用户。如何获取连接到指定wify的用户列表。我试过样品,但什么也没得到。