0

我正在創建一個短信應用程序,在我收到短信的那一刻,我可以創建一個通知,點擊後啓動應用程序。如何在收到短信時更新應用活動?

但是如果在用戶在應用程序中時收到短信會怎麼樣?我怎樣才能讓活動更新本身?

我正在使用BroadcastReceiver,並在點擊通知時啓動PendingIntent。

PendingIntent resultPendingIntent = 
      PendingIntent.getActivity(
      context, 
      0, 
      resultIntent, 
      PendingIntent.FLAG_UPDATE_CURRENT 
     ); 

回答

1

你可以把另一個接收器的活動,像這樣

public class MainActivity extends Activity { 

private IntentFilter filter = new IntentFilter("android.intent.action.SMS_RECEIVED"); 

    private BroadcastReceiver refreshReceiver = new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context c, Intent i) { 
      refresh(); 
     } 
    }; 

    @Override 
    protected void onPause() { 
     context.unregisterReceiver(refreshReceiver); 
     super.onPause(); 
    } 


    @Override 
    protected void onResume() { 
     super.onResume(); 
     context.registerReceiver(refreshReceiver, filter); 
     refresh(); 
    } 

} 
+0

我有一個自定義的broadcastreceiver是否必須在某處設置意圖類型(「my.app.name.INTENT」)? – codareee

+1

您在清單中的意圖(例如android.intent.action.NEW_OUTGOING_CALL)將該字符串放入活動的IntentFilter中。不要在清單中註冊新的接收器,因爲它可能會導致錯誤。保持你的其他BroadcastReceiver(通知用戶)。目前。 – dlee

+0

我現在有另一個問題,我從內容://短信中讀取短信,但它看起來在通知發佈後存儲在那裏,事實上,短信應用通知在我的應用通知後發送。我應該延遲嗎? – codareee

0

@dlee的答案是正確的,但在接收到短信時引發的IntentFilter的是這樣的:

private IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED"); 
相關問題