JonSkeet 2013-05-24 09:41 采纳率: 0%
浏览 2138

区分 sms 中的 inbox 和 sentsms

我创建了一个android程序。在程序中需要列出所有的会话。每个会话包含所有的sms号码。因此我需要区分sms中的inbox和sentsms。
下面的代码用于寻找inbox和sent:

content://sms/inbox
content://sms/sent

但是我不想使用这个方法,我通过使用api列出所有的sms

content://sms/

我使用 columnindex的 type和address 来测试。但是总是给出inbox 和 outbox相同的结果。

Uri SMS_INBOX = Uri.parse("content://sms");
        c = getContentResolver().query(SMS_INBOX, null, "thread_id" + " = "
                        + "3", null,
                        "date" + " ASC");
        if(c.moveToFirst()){
            count.add(c.getCount());
            for(int j=0;j<c.getCount();j++){
                System.out.println(c.getString(c.getColumnIndexOrThrow("body")).toString());
                System.out.println("new   person=="+c.getColumnIndex("person")+"type=="+c.getColumnIndexOrThrow("type"));
                c.moveToNext();
            }
        }
        c.close();

请问如何区分 sms 中的 inbox 和 sentsms?

  • 写回答

1条回答

  • LiDaming_and 2013-05-27 02:03
    关注

    你可以使用 ContentObserver 来追踪发送和接收信息。
    重写 ContentObserver 中的 onChange()方法,获得响应的 sms 类型:

    Cursor cursor = mContext.getContentResolver().query(Uri
                                 .parse("content://sms"), null, null, null, null);
    
    String type = cursor.getColumnIndex("type");
    if(cursor.getString(type).equalsIgnoreCase("1")){
        // 接收sms
     }
     else if(cursor.getString(type).equalsIgnoreCase("2")){
        //发送 sms 
     }
    

    给 SMS 登记 ContentObserver

    ContentResolver observer = this.getContentResolver();
    observer.registerContentObserver(Uri.parse("content://sms"), 
                                   true, new MySMSObserver(new Handler(),this));
    

    MySMSObserver 会使用 Constructor 继承 ContentObserver,Handler and Context作为参数。

    public MySMSObserver(Handler handler, Context context) {
            super(handler);
            this.context = context;
    }
    
    评论

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)