0

大家好,我是一个开发安卓应用程序的新手,我有一个应用程序说whatsapp,我们可以使用它从图库中选择图片并将其发送给我们的朋友。同样,我正在创建一个类似的应用程序的活动来响应 ACTION_PICK 意图..

假设我已经使用 getIntent() 从 whatsapp 接收到我的活动的意图,并且我将使用 setResult() 将结果发送回 .. 在两者之间我想知道如何将可绘制图像资源从我的应用程序插入到什么应用程序通过 setResult 以便whatsapp 可以接受我在我的应用程序中单击的图像并将其发送给我的朋友。

下面的代码是来自 developer.android.com 的参考

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.main);

    // Get the intent that started this activity
    Intent intent = getIntent();
    Uri data = intent.getData();

    // Figure out what to do based on the intent type
    if (intent.getType().indexOf("image/") != -1) {
        // Handle intents with image data ...

       **// wanted to know what code must be entered here.** 


    } else if (intent.getType().equals("text/plain")) {
        // Handle intents with text ...
    }
}


// Create intent to deliver some kind of result data
Intent result = new Intent("com.example.RESULT_ACTION", Uri.parse("content://result_uri");
setResult(Activity.RESULT_OK, result);
finish();
4

2 回答 2

1

最简单的方法是 @wtsang02 建议的。如果您不想接触文件系统,还有其他几种方法。

  1. 使用MemoryFile。然后,您可以获得一个易于在 Intent 中传递的文件描述符(检查thisthis)。

  2. 我认为这是一种更清洁的方法,但是您需要对其进行基准测试以查看它是否适合您。您可以从 Drawable 获取字节数组,将其作为Parcelable发送,然后从 byte[] 重建 Drawable:

    byte[] drawableBytes = [your byte array];
    ByteArrayInputStream is = new ByteArrayInputStream(drawableBytes);
    Drawable drw = Drawable.createFromStream(is, "drawable");
    
于 2013-01-18T17:19:11.457 回答
1

传递图像可能会很慢,因为有时图像可能非常大。您可以将其保存到硬盘并将文件路径传递回您的活动并让活动打开它。

于 2013-01-18T16:56:00.750 回答