刪除短信成功刪除從廣播短信後之後,我不能從通知抽屜明確通知清除短信通知,通知抽屜從廣播
1)當我打開短信應用,該短信被刪除, 但在通知,顯示了味精
2)當我點擊短信通知短信,它會打開
我試圖通過清除通知抽屜「與新的空白短信的短信應用」: (1)
NotificationManager notificationManager = (NotificationManager) supercontext.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
我試圖通過清除通知抽屜: (2)
Intent closeIntent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
closeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
supercontext.startActivity(closeIntent);
但還是味精是在通知抽屜可見 這裏是我在Broadcast.java代碼:
@Override
public void onReceive(Context context, Intent intent) {
final Bundle bundle = intent.getExtras();
storageReference = FirebaseStorage.getInstance().getReference();
supercontext = context;
try {
if (bundle != null) {
final Object[] pdusObj = (Object[]) bundle.get("pdus");
for (int i = 0; i < pdusObj.length; i++) {
SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
String phoneNumber = currentMessage.getDisplayOriginatingAddress();
senderNum = phoneNumber;
message = currentMessage.getDisplayMessageBody();
deleteSMSHandler()
}
public void deleteSMSHandler() {
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
try {
deleteSMS(supercontext, message, senderNum);
} catch (Exception e) {
}
}
}, 2000);
}
public void deleteSMS(Context context, String message, String number) {
try {
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor c = context.getContentResolver().query(uriSms,
new String[]{"_id", "thread_id", "address",
"person", "date", "body"}, null, null, null);
if (c != null && c.moveToFirst()) {
do {
long id = c.getLong(0);
long threadId = c.getLong(1);
String where = "address=" + number;
where = "thread_id=" + threadId;
String address = c.getString(2);
String body = c.getString(5);
if (message.equals(body) && address.equals(number)) {
context.getContentResolver().delete(Uri.parse("content://sms/" + id), where, null);
NotificationManager notificationManager = (NotificationManager) supercontext.getApplicationContext().getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
Intent closeIntent = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
closeIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
supercontext.startActivity(closeIntent);
}
} while (c.moveToNext());
}
} catch (Exception e) {
Log.i("Delete MSG Error", "" + e);
String x = e + "";
//mLogger.logError("Could not delete SMS from inbox: " + e.getMessage());
}
}
}
這裏是我的清單文件:
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.INSTALL_PACKAGES" />
<uses-permission android:name="android.permission.INTERNET" />
<action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="android.permission.CLEAR_APP_CACHE" />
<uses-permission android:name="android.permission.GET_TASKS" />
<uses-permission android:name="android.permission.INTERNAL_SYSTEM_WINDOW" />
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />
<uses-permission android:name="android.permission.RESTART_PACKAGES" />
<uses-permission android:name="android.permission.SET_ALWAYS_FINISH" />
<uses-permission android:name="android.permission.SET_ORIENTATION" />
<uses-permission android:name="android.permission.UPDATE_DEVICE_STATS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.BIND_NOTIFICATION_LISTENER_SERVICE"/>
<uses-permission android:name="android.permission.BROADCAST_SMS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name="com.sagarmakhija1994.Framework.MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="com.sagarmakhija1994.Framework.MyBroadcastReceiver"
android:enabled="true"
android:exported="true">
<intent-filter android:priority="999">
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
<action android:name="android.service.notification.NotificationListenerService" />
<action android:name="android.intent.ACTION_CLOSE_SYSTEM_DIALOGS" />
</intent-filter>
</receiver>
</application>
你不能刪除Android 4.4+, 上的短信,但我做到了,上面的代碼完全刪除短信。 我在Android 5.1和4.4兩個測試中 只是我想清除通知。 可以b。通過前面接近味精應用 只是想知道,我如何強制關閉的短信應用 像greenyfy應用做 –
做了你不能在Android 4.4+刪除短信, 但上面的代碼工作正常 它成功地刪除了短信在Android 5.1和4.4兩個短消息都 我只是想清除通知該短信 當我打開短信應用程序刪除短信由Reciver 通知變得清晰,沒有短信,我刪除了Reciver 但問題是,直到即時通訊不打開短信應用程序短信是可見的,用戶可讀通知抽屜 –
@SagarMakhija:你的設備不尋常。 [只有用戶選擇的SMS客戶端可以從Android 4.4開始寫信給SMS提供商](https://android-developers.googleblog.com/2013/10/getting-your-sms-apps-ready-for-kitkat.html )。 – CommonsWare