android app获取手机短信

1.在AndroidManifest.xml配置权限

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

2.在需要读取短信的函数里配置权限,然后读短信

//如果要读短信,必须在这里配置权限
        if (ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.READ_SMS)
                != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.READ_SMS}, 1);
        }

        //设置 读取收件箱
//        Uri uri = Uri.parse(SMS_URI_INBOX);
        Uri uri = Uri.parse(SMS_URI_ALL);

        SmsContent sc = new SmsContent(this, uri);
        //读取所有短信
        infos = sc.getSmsInfo();

....

//activtiy是从MainActivity传进来的,从它获取context,再从contect获取contentResolver
        ContentResolver cr = activity.getApplicationContext().getContentResolver();

        //获取数据的列/属性
        String[] projection = new String[]{"_id", "address", "person",
                "body", "date", "type", "sim_id"};

        Cursor cusor = cr.query(uri, projection, null, null, "date desc");
        //发短信的人是谁,如果此人在通讯录显示其名字,如果不在,显示Null
        int nameColumn = cusor.getColumnIndex("person");
        //短信内容
        int smsbodyColumn = cusor.getColumnIndex("body");
        //日期,long型,如1256539465022,可以对日期显示格式进行设置
        int dateColumn = cusor.getColumnIndex("date");
        //type:短信类型1是接收到的,2是已发出
        int typeColumn = cusor.getColumnIndex("type");
        int simIdColumn = cusor.getColumnIndex("sim_id");
        //发短信的手机号
        int addressColumn = cusor.getColumnIndex("address");

        if (cusor != null) {
            while (cusor.moveToNext()) {
                SmsInfo smsinfo = new SmsInfo();
                String sms = "name:"+cusor.getString(nameColumn)+";"+
                             "date:"+cusor.getString(dateColumn)+";"+
                             "address:" +cusor.getString(addressColumn)+";"+
                             "body:"+cusor.getString(smsbodyColumn)+";"+
                             "type:"+cusor.getColumnIndex("type")+";"+
                             "sim_id:"+cusor.getColumnIndex("sim_id")+";"+
                             "imei:" + imeistring;
                smsinfo.setSms(sms);
                infos.add(smsinfo);
            }
            cusor.close();
        }

猜你喜欢

转载自blog.csdn.net/u011539200/article/details/81208819