【问题标题】:get access to running activity in parse push notification custom receiver在解析推送通知自定义接收器中访问正在运行的活动
【发布时间】:2015-09-14 13:41:47
【问题描述】:

我有一个使用解析推送通知服务的应用程序。这是我用来接收通知的类:

public class MessageReceiver extends ParsePushBroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
    //...some code in here
}

我还在清单中注册了这个自定义接收器:

<receiver
        android:name="com.package.MessageReceiver"
        android:exported="false" >
        <intent-filter>
            <action android:name="com.parse.push.intent.RECEIVE" />
            <action android:name="com.parse.push.intent.DELETE" />
            <action android:name="com.parse.push.intent.OPEN" />
        </intent-filter>
    </receiver>

通知系统一切正常。收到通知后,我想相应地更新正在运行的活动 UI(例如显示新通知的图标),但我无权访问 onReceive 方法中的活动对象。这样做的最佳做法是什么?在这件事上我不能使用上下文对象。 谢谢

【问题讨论】:

    标签: android parse-platform push-notification broadcastreceiver


    【解决方案1】:

    我相信您可以通过使用 BroadcastReceiver 来完成此操作。

    您可以在要访问的活动中定义接收者, 请参阅下面的 sn-p。

    public MyActivity extends Activity
    {
    
        //... code
        private BroadcastReceiver receiver = new BroadcastReceiver() {
                @Override
                public void onReceive(Context context, Intent intent) {
                    //... update ui here
                 }
             };
    
        @Override
        protected void onResume() {
            IntentFilter filter = new IntentFilter();
            filter.addAction("suitablename"); 
            registerReceiver(receiver, filter);
            super.onResume();
        }
    
        @Override
        protected void onPause() {
            unregisterReceiver(receiver);
            super.onPause();
        }
    
        //... code
    }
    

    然后在您的自定义接收器中发送广播。

    public class MessageReceiver extends ParsePushBroadcastReceiver {
    
         @Override
         public void onReceive(Context context, Intent intent) {
             //...some code in here
    
            Intent intent = new Intent();
            intent.setAction("suitablename");
            context.sendBroadcast(intent);
         }
    }
    

    别忘了更新清单

    <activity
        android:name=".MyActivity" >
    
        <intent-filter>
            <action android:name="suitablename"></action>
        </intent-filter>
    </activity>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多