SMS не блокируются и не удаляются с android

Я написал код для удаления SMS из inbox и блокировки sms с определенного номера. но его не работает идеально.
Вот файл манифеста, где я установил приоритет 2147483647 (max int number)

<?xml version="1.0" encoding="utf-8"?>
<manifest 
    package="com.example.dotnet.epomoload">

    <uses-permission android_name="android.permission.RECEIVE_SMS" />
    <uses-permission android_name="android.permission.WRITE_SMS"/>
    <uses-permission android_name="android.permission.READ_SMS"/>

    <uses-permission android_name="android.permission.INTERNET" />
    <uses-permission android_name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android_name="android.permission.CALL_PHONE"/>



    <application
        android_enabled="true"
        android_allowBackup="true"
        android_icon="@mipmap/ic_launcher"
        android_label="@string/app_name"
        android_supportsRtl="true"
        android_theme="@style/AppTheme">

        <activity android_name=".MainActivity">
            <intent-filter>
                <action android_name="android.intent.action.MAIN" />

                <category android_name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android_name="com.example.dotnet.epomoload.BroadCastReceiver">
            <intent-filter android_priority="2147483647">
                <action android_name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>




    </application>

</manifest>

Вот код, в этом состоянии функция вещания не работает. Но я получаю данные. & Я не понимаю, почему код не работает.

@SuppressWarnings("deprecation")
public class BroadCastReceiver extends BroadcastReceiver
{
public String blockingNumber = "BulkSMS";


private static final String LOG_TAG = "SMSApp";
/* package */
static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent){
    String strFrom = "";
    String strMsg="";



    if (intent.getAction().equals(ACTION)){
        Bundle bundle = intent.getExtras();
        if (bundle != null){
            Object[] pdus = (Object[]) bundle.get("pdus");
            SmsMessage[] messages = new SmsMessage[pdus.length];
            for (int i = 0; i < pdus.length; i++){
                messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
            }
            for (SmsMessage message : messages){
                strFrom = message.getDisplayOriginatingAddress();
                strMsg = message.getDisplayMessageBody();
            }
            if (strFrom.equals(blockingNumber)){
                this.abortBroadcast();
                Toast.makeText(context.getApplicationContext(),"Sms From Shohan"+strMsg,Toast.LENGTH_LONG).show();
                //removeMessage(context,blockingNumber);
                Uri uriSMS = Uri.parse("content://sms/inbox");
                Cursor cursor = context.getContentResolver().query(uriSMS, null,
                        null, null, null);
                cursor.moveToFirst();
                if(cursor.getCount() > 0){
                    int ThreadId = cursor.getInt(1);
                    context.getContentResolver().delete(Uri.
                                    parse("content://sms/conversations/"+ThreadId), "address=?",
                            new String[]{blockingNumber});
                    Log.d("Message Thread Deleted", blockingNumber);
                }
                cursor.close();
            }
        }
    }

}


}

1 ответ

  1. С Android 4.4 приложение не может делать операции записи (пометить как прочитано, удалить) на SMSs. Для этого приложение должно быть приложением sms-сообщений по умолчанию.

    Однако если ваше приложение предназначено для работы в качестве приложения SMS по умолчанию,
    если ваше приложение Не выбрано по умолчанию, это важно
    что вы понимаете ограничения, наложенные на ваше приложение и отключаете
    особенности по мере необходимости. Хотя система пишет отправленные SMS сообщения
    для поставщика SMS, хотя ваше приложение не является приложением SMS по умолчанию, оно
    не писать отправленные MMS-сообщения и ваше приложение не может писать в
    Поставщик SMS для других операций, таких как пометка сообщений как черновик,
    отметьте их как прочитанные, удалите их и т.д.
    Ссылка

    Если приложение установлено в качестве приложения по умолчанию, необходимо проверить Telephony.Sms.getDefaultSmsPackage().