【问题标题】:How to update app activities when an sms is received?收到短信时如何更新应用活动?
【发布时间】:2013-09-30 08:08:11
【问题描述】:

我正在创建一个短信应用,当我收到短信时,我可以创建一个通知,点击该通知即可启动该应用。

但是如果用户在应用程序中时收到短信怎么办?如何让活动自行更新?

我正在使用 BroadcastReceiver,并在单击通知时启动 PendingIntent。

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

【问题讨论】:

    标签: android android-activity android-notifications android-pendingintent android-broadcast


    【解决方案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();
        }
    
    }
    

    【讨论】:

    • 我有一个自定义广播接收器,我必须在某处设置意图类型(“my.app.name.INTENT”)吗?
    • 您在清单中的意图(例如 android.intent.action.NEW_OUTGOING_CALL),将该字符串放入 Activity 的 IntentFilter 中。不要在清单中注册新的接收器,因为它可能会导致错误。保持您的另一个 BroadcastReceiver(通知用户的那个)保持原样。暂时。
    • 我现在有另一个问题,我从 content://sms 读取了短信,但它似乎是在发送通知后存储在那里的,实际上是在我的应用程序之后发送短信应用程序通知通知。我应该推迟吗?
    • 我不确定抱歉,我从来没有这么频繁地使用 SMS。
    【解决方案2】:

    @dlee 的答案是正确的,但是收到短信时抛出的 IntentFilter 是这样的:

    private IntentFilter filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-08-19
      • 2013-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-20
      相关资源
      最近更新 更多