android接收短信功能



android 接收短信功能此类用处不大,记录一下:

    /**
     * 监听数据库内容改变,根据具体的号码来删除短信
     */
    private class SmsContent extends ContentObserver {
        private Cursor cursor = null;
        private Handler hand = null;
        private String phoneNumber = null;
        private int msgSuccess = 0;//响应的msg_id
        private int msgFail = 0;//响应的msg_id

        public SmsContent(final Handler handler, final int successCode, final int failCode, final String phone) {
            super(handler);
// TODO Auto-generated constructor stub
            hand = handler;
            msgSuccess = successCode;
            msgFail = failCode;
            phoneNumber = phone;
            Log.i(TAG, "HAITAG SmsContent msgSuccess = " + msgSuccess + " msgFail = " + msgFail + " phoneNumber = " + phoneNumber);
        }

        /* (non-Javadoc)
        * @see android.database.ContentObserver#onChange(boolean)
        */
        @Override
        public void onChange(boolean selfChange) {
// TODO Auto-generated method stub
            super.onChange(selfChange);

//数据库查询,具体各个字段的表示的含义下面有解释
            cursor = managedQuery(Uri.parse("content://sms/inbox"),
                    new String[]{"_id", "address", "read"},
                    "address=? and read=?",
                    new String[]{phoneNumber, "0"},
                    "date desc");

            if (cursor != null) {
                ContentValues values = new ContentValues();
                values.put("read", 1);
                cursor.moveToFirst();

                Log.i(TAG, "HAITAG SmsContent selfChange = " + selfChange + " cursor.toString = " + cursor.toString());
                Log.i(TAG, "HAITAG SmsContent selfChange = " + selfChange + " cursor.getColumnNames = " + cursor.getColumnNames());


                while (cursor.isLast()) {
                    getContentResolver().update(Uri.parse("content://sms/inbox"),
                            values,
                            "_id=?",
                            new String[]{"" + cursor.getInt(0)});
                    cursor.moveToNext();
                }
                hand.sendEmptyMessage(msgSuccess);
                return;
            }

            Log.i(TAG, "HAITAG SmsContent.onChange error selfChange = " + selfChange);
            hand.sendEmptyMessage(msgFail);
            return;
        }
    }

使用处,发送完短信就调用拦截短信功能类,能拦截但是无法获取短信内容: joyPaySmsNeedOneBackB2

    private static final int MSG_SMS_BACK_FAIL = 0;//发送扣费短信后未返回信息
    private static final int MSG_SMS_BACK_1 = 1;//发送扣费短信后收到
    private static final int MSG_SMS_BACK_2 = 2;

    /**
     * 有些短信付费需要二次确认
     *
     * @param phoneNumber
     * @return
     */
    private boolean joyPaySmsNeedOneBackB2(final String phoneNumber) {
        //注册监听二次确认短信
        Handler hand = new Handler() {
            @Override
            public void handleMessage(Message msg) {
                Log.i(TAG, "HAITAG joyPaySmsNeedOneBackB2 handleMessage msg.what = " + msg.what);
                switch (msg.what) {
                    case MSG_SMS_BACK_1:
                        break;
                    case MSG_SMS_BACK_2:
                        break;
                    case MSG_SMS_BACK_FAIL:
                        break;
                    default:
                        break;
                }
            }
        };

        Log.i(TAG, "HATAG joyPaySmsNeedOneBackB2 phoneNumber = " + phoneNumber);
        SmsContent content = new SmsContent(hand, MSG_SMS_BACK_1, MSG_SMS_BACK_FAIL, phoneNumber);
        DooyogamePaySelect.this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);
        return true;
    }


在androidmenifest.xml中添加权限:

    <uses-permission android:name="android.permission.READ_PHONE_STATE"/>
    <uses-permission android:name="android.permission.WRITE_SMS"/>
    <uses-permission android:name="android.permission.READ_SMS"/>
    <uses-permission android:name="android.permission.SEND_SMS"/>
    <uses-permission android:name="android.permission.RECEIVE_SMS"/>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值