获取手机短信



import android.content.pm.PackageManager;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;

import android.app.Activity;
import android.database.ContentObserver;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private TextView vSms;//短信内容TextView
private SMSContent smsObsever;//短信观察者

private Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
Bundle bundle = msg.getData();
String body = bundle.getString("body");
vSms.setText(body);
}

;
};

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
vSms = (TextView) this.findViewById(R.id.tx_sms);//短信内容显示
smsObsever = new SMSContent(handler);//实例化短信观察者
//注册短信观察者
getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, smsObsever);
}

/**
* @author Administrator
* @description 短信观察者
*/
class SMSContent extends ContentObserver {
private Handler mHandler;

public SMSContent(Handler handler) {
super(handler);
mHandler = handler;
}

@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Cursor cursor = null;
String body = null;

//申请读取短信的权限,需要与用户交互
final int REQUEST_CODE_ASK_PERMISSIONS = 123;
ActivityCompat.requestPermissions(MainActivity.this, new String[]{"android.permission.READ_SMS"}, REQUEST_CODE_ASK_PERMISSIONS);

//读取之前判断一下是否已经渠道权限
if (ContextCompat.checkSelfPermission(getBaseContext(), "android.permission.READ_SMS") == PackageManager.PERMISSION_GRANTED) {
try {
cursor = getContentResolver().query(
Uri.parse("content://sms/inbox"), null, null, null,
"date desc");
if (cursor != null) {
if (cursor.moveToNext()) {//不遍历只拿当前最新的一条短信
//获取当前的短信内容
body = cursor.getString(cursor.getColumnIndex("body"));
Message msg = Message.obtain();
Bundle bundle = new Bundle();
bundle.putString("body", body);
msg.setData(bundle);
mHandler.sendMessage(msg);
}

}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (cursor != null) {
cursor.close();
}

}
}
}
}

@Override
protected void onDestroy() {
super.onDestroy();
//取消注册
getContentResolver().unregisterContentObserver(smsObsever);
}
}






<!--收短信的权限-->
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<!--读取短信信息的权限-->
<uses-permission android:name="android.permission.READ_SMS"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值