您的位置:首页 > 移动开发 > Android开发

android_访问系统短信内容提供者

2016-03-15 17:08 411 查看
使用内容解析者去访问系统短信的内容提供者

既然我们需要访问系统短信的内容提供者,

首先我们就需要知道口令,还有uriMatcher,和数据库的表结构.

这些都是需要去系统的sms内容提供者里面找的到的(下面会截图出来)

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

//添加短信
public void insert(View v){
ContentResolver resolver  = getContentResolver();

//path路径不写,默认就是inbox , 可以查看源码得知。
Uri uri = Uri.parse("content://sms");
//查看数据库表结构
ContentValues values = new ContentValues();
//发信人
values.put("address", "110");
//短信内容
values.put("body","尊敬的张先生,恭喜您荣获好市民奖,希望您在以后的生活中勇于和敢于扶老奶奶过马路。");

//收到短信的时间
values.put("date",System.currentTimeMillis());
//短息的类型 1 : 收到的短信 ,2: 发出去的短信
values.put("type", 1);

resolver.insert(uri, values);

Toast.makeText(this, "添加短息成功", 0).show();
}

public void delete(View v){

ContentResolver resolver  = getContentResolver();
// path路径不写,默认就是inbox , 可以查看源码得知。
Uri uri = Uri.parse("content://sms");
resolver.delete(uri, "address=?", new String[]{"110"});

Toast.makeText(this, "删除短息成功", 0).show();

}
}


注意:

1. 短信的写入操作,在4.4之后,系统不允许这么做了。原因是: 系统做了一个设置,只有系统的默认程序才可以对短信进行写入操作。其他应用可以读取短信,但是无法写入。

2. 要求收到到/setting/apps /里面手动修改默认的应用是谁。

在4.4之后,默认的内容提供者,外部程序无法访问了。要手动打开开关。

android:exported=”true”

下面是系统的代码





内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android