经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 移动开发 » Android » 查看文章
Android使用ContentProvider实现查看系统短信功能
来源:jb51  时间:2021/11/15 17:22:06  对本文有异议

本文实例为大家分享了使用ContentProvider实现查看系统短信功能的具体代码,供大家参考,具体内容如下

activity_main.xml

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  3. xmlns:app="http://schemas.android.com/apk/res-auto"
  4. xmlns:tools="http://schemas.android.com/tools"
  5. android:layout_width="match_parent"
  6. android:layout_height="match_parent"
  7. android:orientation="vertical"
  8. tools:context=".MainActivity">
  9. <TextView
  10. android:id="@+id/tv_show"
  11. android:layout_width="match_parent"
  12. android:layout_height="0dp"
  13. android:textSize="20dp"
  14. android:layout_weight="9"></TextView>
  15. <Button
  16. android:id="@+id/bt_show"
  17. android:layout_weight="1"
  18. android:text="查看短信"
  19. android:onClick="show"
  20. android:layout_width="match_parent"
  21. android:layout_height="0dp"></Button>
  22. </LinearLayout>

Sms.java

  1. public class Sms {
  2. private int id;
  3. private String address;
  4. private String body;
  5.  
  6. public Sms(int id, String address, String body) {
  7. this.id = id;
  8. this.address = address;
  9. this.body = body;
  10. }
  11.  
  12. public int getId() {
  13. return id;
  14. }
  15.  
  16. public void setId(int id) {
  17. this.id = id;
  18. }
  19.  
  20. public String getAddress() {
  21. return address;
  22. }
  23.  
  24. public void setAddress(String address) {
  25. this.address = address;
  26. }
  27.  
  28. public String getBody() {
  29. return body;
  30. }
  31.  
  32. public void setBody(String body) {
  33. this.body = body;
  34. }
  35. }

MainActivity.java

  1. public class MainActivity extends AppCompatActivity {
  2. private TextView tv_show;
  3. private Button bt_show;
  4. private List<Sms> list=new ArrayList<>();
  5. private String text="";
  6.  
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_main);
  11. tv_show=findViewById(R.id.tv_show);
  12. bt_show=findViewById(R.id.bt_show);
  13. }
  14.  
  15. public void show(View view) {
  16. ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.READ_SMS},1);
  17. }
  18. public void getSms(){
  19. Uri uri= Uri.parse("content://sms/");
  20. ContentResolver contentResolver=getContentResolver();
  21. Cursor cursor = contentResolver.query(uri, new String[]{"_id", "address",
  22. "body"}, null, null, null);
  23. if (cursor!=null&&cursor.getCount()>0){
  24. if (list!=null){
  25. list.clear();
  26. }
  27. text="";
  28. while (cursor.moveToNext()){
  29. int id=cursor.getInt(0);
  30. String name=cursor.getString(1);
  31. String body=cursor.getString(2);
  32. Sms sms=new Sms(id,name,body);
  33. list.add(sms);
  34. }
  35. for (int i=0;i<list.size();i++){
  36. text+="手机号码:"+list.get(i).getAddress()+"\n";
  37. text+="短信内容:"+list.get(i).getBody()+"\n\n";
  38. }
  39. tv_show.setText(text);
  40. }
  41. }
  42.  
  43. @Override
  44. public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
  45. super.onRequestPermissionsResult(requestCode, permissions, grantResults);
  46. if (requestCode==1){
  47. for (int i=0;i<permissions.length;i++){
  48. if (grantResults[i]== PackageManager.PERMISSION_GRANTED){
  49. getSms();
  50. }else {
  51. Toast.makeText(MainActivity.this,"无权限",Toast.LENGTH_SHORT).show();
  52. }
  53. }
  54. }
  55. }
  56.  
  57.  
  58. }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号