簡體   English   中英

Android Broadcast接收器管理

[英]Android Broadcast receiver management

在我的Android應用程序中,當收到短信時,我的廣播開始。 當第一個未完成時,我想管理何時收到新的SMS。 我有想法殺死第一個過程。 但是我也不是要做什么。 如果你能幫助我。 我是Android的重要人物。 這是我的Brocast代碼。

謝謝。

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.text.TextUtils;

public class SMSReceiver extends BroadcastReceiver {
private static final String number = "15555215556";

@Override
public void onReceive(Context context, Intent intent) {

    Bundle bundle = intent.getExtras();
    Object[] messages = (Object[]) bundle.get("pdus");
    SmsMessage[] sms = new SmsMessage[messages.length];

    // Creation
    for (int i=0; i < messages.length; i++) {
        sms[i] = SmsMessage.createFromPdu((byte[]) messages[i]);
    }
    for (SmsMessage msg : sms) {

        // Vérifie
        if (TextUtils.equals(msg.getOriginatingAddress(), number)) {
            Intent i = new Intent(context, DisplayActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            String sms2 = msg.getMessageBody();
            i.putExtra("SMS",sms2);
            context.startActivity(i);

            abortBroadcast();
        }
    }

}
}

當第一個未完成時,我想管理何時收到新的SMS。

這對我來說不是很清楚,您不應該在廣播中做任何繁重的工作,最好將必要的數據復制到ie。 共享首選項或數據庫,然后啟動IntentService對其進行進一步處理。 使用IntentService您可以將數據直接在Intent傳遞給服務。

但是從您的代碼中我看不到任何長時間的處理

殺死第一個過程

在android下,這始終是一個壞主意(請在此處查看更長時間的解釋: 退出應用程序后會皺眉嗎? )。 同樣是abortBroadcast(); 你打算 抑制通知?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM