在Android 8.0上实现拦截并删除垃圾短信 (Root)

1. 使用NotificationListenerService获得收到的短信内容

2. 清除通知栏通知(手机已Root的情况下)

```

Process process = Runtime.getRuntime().exec("su");

DataOutputStream dataOutputStream =new DataOutputStream(process.getOutputStream());

dataOutputStream.writeBytes("service call notification 1\n");

dataOutputStream.flush();

dataOutputStream.writeBytes("exit\n");

dataOutputStream.close();

```

3. 复制mmssms.db到内置存储目录, 进行修改, 然后复制回系统目录 (Android 4.4更改文件权限后可直接在data目录进行数据库修改, 但8.0后不行, 即使已经更改了文件权限)

需要用到的库:RootTools.jar

```

String a ="/data/user_de/0/com.android.providers.telephony/databases/mmssms.db";

String b ="Environment.getExternalStorageDirectory().getAbsolutePath() +"/OCR/mmssms.db";

RootTools.copyFile(a, b,true,true);//复制到指定目录

String sql ="delete from sms where address=?";//开始修改 //删除语句

SQLiteDatabase sQLiteDatabase = SQLiteDatabase.openOrCreateDatabase(dbFile,null);//打开指定路径的db文件

sQLiteDatabase.execSQL(sql,new String[]{number});

sQLiteDatabase.close();

RootTools.copyFile(b, a,true,true);//修改完成后复制回去

```

(谁能告诉我为什么的编辑器这么难用, 字体大小设置不了, 插入代码块无效, 好多空行删除不了...)

你可能感兴趣的:(在Android 8.0上实现拦截并删除垃圾短信 (Root))