大家好我是一个为Android开发应用程序的新手我有一个应用程序说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();
答案 0 :(得分:1)
传递图像可能很慢,因为有时图像可能非常大。您可以将其保存到硬盘并将文件路径传递回您的活动,并让您的活动打开它。
答案 1 :(得分:1)
最简单的方法是@ wtsang02建议的。如果您不想触摸文件系统,还有其他几种方法。
使用MemoryFile。然后,您可以获得易于在Intent中传递的文件描述符(选中this和this)。
我认为这是一种更清洁的方法,但您需要对其进行基准测试以确定它是否适合您。您可以获取byte array from your Drawable,将其作为Parcelable发送,然后从byte []重新构建Drawable:
byte[] drawableBytes = [your byte array];
ByteArrayInputStream is = new ByteArrayInputStream(drawableBytes);
Drawable drw = Drawable.createFromStream(is, "drawable");