无法将位图从活动传递到AIDL服务

时间:2012-02-15 19:10:43

标签: android

我正在尝试将从DrawingCache(在我的活动类中)创建的位图传递给AIDL服务。但这不会传递给服务。甚至我服务中的storeImage方法也不会打印我的日志。虽然如果我从资源中获取任何位图(png),然后将其从我的活动传递给AIDL服务,它就可以工作。

由于某些限制,我无法将WRITE_EXTERNAL_STORAGE权限添加到我的活动类,这就是我将此位图传递给服务以将其存储在Sdcard中的原因。如果暂时我将此权限添加到我的活动中,并且只在活动类中存储过程,那么图像将被正确存储。但是,如果我将此图像放在资源文件夹中然后将其发送到AIDL服务,则不会调用storeImage方法。

此代码适用于大多数设备,但很少有设备不起作用。这是使用view.getDrawingCache()创建的位图是错误的吗?

以下是代码块:

 view.buildDrawingCache();
 bitmap = view.getDrawingCache();

 //This code block sends the bitmap to the service

if (logProvider != null && logProvider.isServiceRunning()) {
    logProvider.storeBitmap(bitmap);
}

1 个答案:

答案 0 :(得分:0)

您可以使用某种中介类,因为您只能通过本机数据类型从应用程序中的其他位置(例如“活动”)与您的服务进行通信。如果使用静态HashMap创建一个类,则可以存储Bitmap和某种键(可能是存储它的时间戳或其他区分Bitmap的方法),然后将密钥传递给Service,Service然后可以使用密钥检索位图。确保在完成和失败时清理Bitmap引用。