Ahoj všem
Mám za úkol vytvořit SMS APP pro skrytí vybraných čísel tak aby nepropadli dále do defaultní SMS APP, tento ukol je jednoduchy pro AND API < 19 používám tento kod.
public class SMSReceiver extends BroadcastReceiver {
public static String TAG = "SMSReceiver";
ToneGenerator tg = new ToneGenerator(AudioManager.STREAM_MUSIC, 100);
public SMSReceiver() {
}
@Override
public void onReceive(Context context, Intent intent) {
SMS_Throttle.VytvorDatabazi(context);
String act = intent.getAction();
Log.d(TAG, act);
if (Dtb.HodnotaZNastaveniINT(ENastaveni.START_SKRYTE_SLUZBY, 1) == 1) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
boolean isAbort = false;
if (bundle != null) {
Object[] pdus = (Object[]) bundle.get("pdus");
msgs = new SmsMessage[pdus.length];
String lst[][] = SMS_Throttle.getTlfCisla(context);
String[] l = new String[lst.length];
for (int j = 0; j < lst.length; j++)
l[j] = lst[j][0];
for (int i = 0; i < msgs.length; i++) {
msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
for (int j = 0; j < l.length; j++) {
if (msgs[i].getOriginatingAddress().endsWith(l[j])) {
if (Dtb.HodnotaZNastaveniINT(ENastaveni.PRISLA_AKTIVITA, 0) == 1) {
tg.startTone(ToneGenerator.TONE_DTMF_5, 30);
Toast.makeText(context, msgs[i].getMessageBody(), Toast.LENGTH_LONG).show();
}
isAbort = true;
Dtb.UlozActivitu(l[j], msgs[i].getMessageBody(), EKomunType.RECEIVE_SMS);
}
}
}
}
if (isAbort) {
abortBroadcast();
}
}
}
}
Duležité:
v nižších verzích API perfektně zabere abortBroadcast().
Tedy pokud číslo odesílatele JE uvedeno v mém seznamu viz podmínka if (msgs[i].getOriginatingAddress().endsWith(l[j])) { pak tato SMS BUDE uložena v mé databázi aNEPROPADNE do defaultní APP pro SMS messaging.
Pokud číslo NENÍ uvedené v mém seznamu pak se do mé databáze uložit NESMÍ ale MUSIpropadnout do defaultní APP pro messaging.
Problem vznikl v API >= 19 kde ten abortbroadcast vůbec nefunguje a navic byly odstraněny práva na možnost výmazu vybraných SMS z defaultní SMS APP.
Poradí někdo jak řešit problem kdy POTŘEBUJI využít můj receiver SMS a současně ten defaultní?
Již jsem pročetl snad vše http://android-developers.blogspot.cz/2013/10/getting-your-sms-apps-ready-for-kitkat.html ale i celou řadu příspěvků na stackoverflow ale nikde jsem na řešení této myšlenky nenarazil.
Díky za každou myšlenku