我的工作是创建短信APP以隐藏所选的号码,以便进一步进入默认短信应用程序,此任务是使用此代码进行AND< 19的简单API。
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();
}
}
}
}
重要的:
早期版本的API完美拍摄abortBroadcast()。因此,如果我的列表中列出了发件人的号码,请参阅条件if(msg [i] .getOriginatingAddress()。EndsWith(l [i])){那么SMS将保存在我的数据库中而不是属于短信的默认应用程序。
如果我的列表中没有列出该号码,那么我必须进入我的数据库进行存储,但您必须使用默认的消息传递应用程序。
API&gt;中出现问题= 19,其中abortbroadcast完全不起作用,而且在删除默认短信应用程序中选定短信的可能性时被删除。
建议有人在默认情况下需要使用我的短信接收器时如何解决问题?我已经阅读了几乎所有http://android-developers.blogspot.cz/2013/10/getting-your-sms-apps-ready-for-kitkat.html,但也有很多关于stackoverflow的帖子,但我从没想过要解决这个问题。
感谢您的每一个想法