0

我正在尝试使用共享意图从我的应用程序共享到 Hyves。如果我安装了 hyves 应用程序并从图库中共享它会切换到 hyves 应用程序,并将图像正确上传到 hyves,所以它应该可以工作。

问题是,我找不到它记录了 hyves 的正确意图应该如何工作,但我假设画廊只上传图像,所以我有这个:

Bitmap image = BitmapFactory.decodeFile(MyGlobals.INSTANCE.activeSetting.f_image_path);

这是我在应用程序中提取“活动”或“选定”图像的代码行。此时图像已保存到 SD 卡,所以我可能会读取 uri 而不是解码文件,但我希望它以这种方式对 hyves 和 facebook 具有相同的方法。

然后我打电话:

Intent hyvesIntent = new Intent(Intent.ACTION_SEND);
 hyvesIntent.setPackage("com.hyves.android.application");
 hyvesIntent.setType("image/jpeg");
 hyvesIntent.putExtra("image", image);
 startActivityForResult(hyvesIntent, 666);

首先,我不确定 setPackage 是否可以在这里使用,但我正在检查这个包是否存在以启用/禁用共享,这是可见的包名称。

我需要活动结果然后通知图像是否共享。

这里发生了什么,它启动了 Hyves 应用程序,但我得到全白屏,然后 Hyves 应用程序超时。

那么,我可以在意图中使用位图吗? setPackage 可以还是应该 setClass?

肿瘤坏死因子

4

1 回答 1

1

也许您不能将位图直接放在意图中。首先将位图转换为字节数组而不是发送另一侧并转换为位图

    //convert bitmap to bytearray
    public static byte[] getBitmapAsByteArray(Bitmap bitmap, boolean type) {
    ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    if (type) {
        bitmap.compress(CompressFormat.PNG, 0, outputStream);
    } else {
        bitmap.compress(CompressFormat.JPEG, 0, outputStream);
    }
    return outputStream.toByteArray();
 }
     //convert bitmap to bytearray
    public static Bitmap getBitmap(byte[] imgByte){
      Bitmap bm = BitmapFactory.decodeByteArray(imgByte, 0, imgByte.length);
       return bm;
    }
   //than intent

          Intent hyvesIntent = new Intent(Intent.ACTION_SEND);
          hyvesIntent.setPackage("com.hyves.android.application");
           hyvesIntent.setType("image/jpeg");
           hyvesIntent.putExtra("image", getBitmapAsByteArray(image,true));
           startActivityForResult(hyvesIntent, 666);

我希望这是放置图像的正确方法

于 2012-11-02T12:28:55.510 回答