首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MMS发件人地址问题

MMS发件人地址问题
EN

Stack Overflow用户
提问于 2011-06-17 08:57:07
回答 3查看 2.6K关注 0票数 2

我正在尝试获取发件人的地址,但我遇到了一个小问题。如果发送消息的人是任何会话中第一个发送消息的人,则content://mms/inbox的查询返回零行??但是,当有人发送任何其他彩信,它将返回与_id罚款,我不明白为什么第一个不能正常工作?

代码语言:javascript
复制
private String checkMmsMessages(Context context){
    String address = "address";

    Cursor curPdu = context.getContentResolver ().query(Uri.parse("content://mms/inbox"), null, null, null, null);
    if(curPdu.moveToNext()){ //first MMS message curPdu.moveToNext() is false
    String id = curPdu.getString (curPdu.getColumnIndex ("_id"));

    Log.v("MMS", "ID1: " + id.toString());

    Uri uriAddr = Uri.parse ("content://mms/" + id + "/addr");
    Cursor curAddr = context.getContentResolver().query(uriAddr,null,"type=137",null,null);
    if(curAddr.moveToNext()){
             address = curAddr.getString (curAddr.getColumnIndex ("address"));
             Log.v("MMS", "Address1: " + address.toString());
             if(address.contentEquals("insert-address-token")){
                 Cursor curAddr2 = context.getContentResolver().query(uriAddr,null,"type=151", null,null);
                 if(curAddr2.moveToNext()){
                     address = curAddr2.getString(curAddr2.getColumnIndex("address"));
                 }
             }
        }
    }
    Log.v("MMS", address.toString());
    return address;
}

还有一件不合理的事情是,当我将手机插入计算机并使用调试器单步执行该部分时,该问题不会发生,并且每次都会获得地址……只有当电话没有连接的时候才会发生,我就是不明白?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-02-19 23:20:33

问题是在将消息放入数据库之前,我正在检查数据库,所以我必须延迟检查

票数 1
EN

Stack Overflow用户

发布于 2013-02-19 12:20:49

我认为问题在于您向query()方法传递的是selectionArgs的值,而不是null。实际上,我并没有在代码中调用mCursor的moveToNext()方法,而是在SimpleCursorAdapter的getView()方法中实现了这个逻辑。

代码语言:javascript
复制
Uri uri = Uri.parse("content://mms-sms/conversations/" + mThreadId);
String[] projection = new String[] { "body", "person", "sub",
            "subject", "retr_st", "type", "date", "ct_cls", "sub_cs",
            "_id", "read", "ct_l", "st", "msg_box", "reply_path_present",
            "m_cls", "read_status", "ct_t", "status", "retr_txt_cs",
            "d_rpt", "error_code", "m_id", "date_sent", "m_type", "v",
            "exp", "pri", "service_center", "address", "rr", "rpt_a",
            "resp_txt", "locked", "resp_st", "m_size" };
String sortOrder = "normalized_date";

Cursor mCursor = getActivity().getContentResolver().query(uri,projection, null, null, sortOrder);

String messageAddress;
int type;
while (mCursor.moveToNext()) {
    String messageId = mCursor.getString(mCursor.getColumnIndex("_id"));

    Uri.Builder builder = Uri.parse("content://mms").buildUpon();
    builder.appendPath(messageId).appendPath("addr");
    Cursor c = mContext.getContentResolver().query(builder.build(), new String[] {
        "*"
    }, null, null, null);
    while (c.moveToNext()) {
        messageAddress = c.getString(c.getColumnIndex("address"));

        if (!messageAddress.equals("insert-address-token")) {
            type = c.getInt(c.getColumnIndex("type"));
            c.moveToLast();
        }
    }
    c.close();
}
票数 0
EN

Stack Overflow用户

发布于 2017-11-13 07:10:58

代码语言:javascript
复制
try this...


    private String getAddressNumber(String id) {
            String selectionAdd = new String("msg_id=" + id);
            String uriStr = MessageFormat.format("content://mms/{0}/addr", id);
            Uri uriAddress = Uri.parse(uriStr);
            Cursor cursor = getContentResolver().query(uriAddress, null, selectionAdd, null, null);

            String phoneNum = null;
            if (cursor.moveToFirst()) {
                do {
                    String number = cursor.getString(cursor.getColumnIndex("address"));
                    if (number != null) {
                        boolean isNumberFormat = true;
                        try {
                            Long.parseLong(number.replace("-", ""));
                            phoneNum = number;
                        } catch (NumberFormatException e) { // ex) "insert-address-token"
    //                        if (phoneNum == null) {
    //                            phoneNum = number;
    //                        }
                            isNumberFormat = false;
                        }
                        if (isNumberFormat)
                            break;
                    }
                } while (cursor.moveToNext());
            }
            if (cursor != null) {
                cursor.close();
            }
            return phoneNum;
        }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6380322

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档