我正在为 android 开发一个 SMS-MMS 保险库应用程序。其目的是纠正 Android 中存在的几个漏洞,以及在某些联系人(加密的 SMS 和 MMS)之间创建一个“安全”的通信空间。
我已经实现了所有预期的功能,除了接收彩信的功能。我没有找到关于这件事的任何文件。我一直在从其他实现此功能的应用程序中阅读大量代码,所有这些代码都在等待股票应用程序接收彩信然后检索它,这不是我想要的,因为我的应用程序应该是默认的。
所以,这里引出了我的问题:
收到彩信意图后,如何解析图像和文本?
我正在为 android 开发一个 SMS-MMS 保险库应用程序。其目的是纠正 Android 中存在的几个漏洞,以及在某些联系人(加密的 SMS 和 MMS)之间创建一个“安全”的通信空间。
我已经实现了所有预期的功能,除了接收彩信的功能。我没有找到关于这件事的任何文件。我一直在从其他实现此功能的应用程序中阅读大量代码,所有这些代码都在等待股票应用程序接收彩信然后检索它,这不是我想要的,因为我的应用程序应该是默认的。
所以,这里引出了我的问题:
收到彩信意图后,如何解析图像和文本?
所以你可以做些什么来获取图片是去我获取彩信的 id 并通过 ("content://mms/part") 进行类型检查:
String type = cursor.getString(cursor.getColumnIndex("ct"));
String partId = cursor.getString(cursor.getColumnIndex("_id"));
//is type a picture
if ("image/jpeg".equals(type) || "image/bmp".equals(type)
|| "image/gif".equals(type) || "image/jpg".equals(type)
|| "image/png".equals(type)) {
getMmsImage(partId); // load in your picture
}
现在您有了零件 ID,您知道图片的位置,因此您可以使用任何您想要的内容加载它,例如,如果您只想将其作为位图,您可以执行以下操作:
public Bitmap getMmsImage(String _id, Context context) {
Uri partURI = Uri.parse("content://mms/part/" + _id);
InputStream is = null;
Bitmap bitmap = null;
try {
is = context.getContentResolver().openInputStream(partURI);
bitmap = BitmapFactory.decodeStream(is);
} catch (Exception e) {// probably should do an ioException around here}
finally {
if (is != null) {
try {
is.close();
} catch (IOException e) {}
}
}
return bitmap;
}
现在我想指出,如果你想要动画 gif,这是行不通的,它会加载 gif,但它们将是静止图像。如果你想让它们动画,你可以使用Glide之类的东西,并给它 uri 的路径位置。Glide 需要一些时间来加载 gif,只是公平的警告。
至于接收彩信,您总是可以使用观察者并在观察者说有变化时加载添加的消息......或者如果您希望它成为默认信使,则使用广播接收器。