【问题标题】:How to open image from MMS in DELPHI XE8如何在 DELPHI XE8 中打开彩信中的图像
【发布时间】:2015-08-29 21:16:36
【问题描述】:

我有一个自动读取收到的彩信的应用程序。

当他发送带有附件(图片)的消息时,我得到了保存图像的目录:

.
.
.
uri:= StrToJURI('content://mms/part');
uriQuery:= StringToJString('mid = 122');
cursor:= SharedActivity.getContentResolver.query(uri, nil, uriQuery, nil, nil);
imgPath:= JStringToString(cursor.getString(cursor.getColumnIndex(StringToJString('_data'))));
.
.
.

imgPath 例如:'/data/data/com.android.providers.telephony/app_parts/PART_1440873132846_image.jpeg'。

当我尝试打开此文件时,它报告错误:'无法打开文件 - 权限被拒绝'。

有人告诉我如何打开这个文件(图片来自彩信)?

【问题讨论】:

    标签: android image delphi mms delphi-xe8


    【解决方案1】:

    您正在尝试打开属于另一个应用程序的文件。 Android 通常不会允许这样做,除非其他应用明确共享该文件。在这种情况下,它显然没有这样做。

    您可以尝试使用另一个 content: URL 根据其在 MMS 消息中的 ID 而不是其实际文件名来访问该文件:

    uri := StrToJURI('content://mms/part');
    uriQuery := StringToJString('mid = 122');
    cursor := SharedActivity.getContentResolver.query(uri, nil, uriQuery, nil, nil);
    partID := StringToString(cursor.getString(cursor.getColumnIndex(StringToJString('_id'))));
    
    uri := StrToJURI('content://mms/part/' + partID);
    is := SharedActiviy.getContentResolver.openInputStream(uri); // returns a JInputStream 
    try
      bitmap := TJBitmapFactory.JavaClass.decodeStream(is); // returns a JBitmap
    finally
      is.close;
    end;
    // use bitmap as needed...
    

    【讨论】:

    • 谢谢雷米。你很好地指导了我。它仍然想添加几行代码并加载图像。 ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多