Zee*_*riq 2 java android firebase firebase-cloud-messaging
我正在处理 Firebase 推送通知,我想关闭MainActivity. 应用程序应在onMessageReceived()调用时完成。我也通过了,Context但它不起作用。在这种情况下,我会在应用程序打开时发送通知。我的代码:
主活动.java
public class MainActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new FirebaseMessagingService(MainActivity.this);
}
}
Run Code Online (Sandbox Code Playgroud)
FirebaseMessagingService.java
public class FirebaseMessagingService extends
com.google.firebase.messaging.FirebaseMessagingService {
Context context;
public FirebaseMessagingService(Context ctx) {
this.context = ctx;
}
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
context.finish();
}
}
Run Code Online (Sandbox Code Playgroud)
您可以定义一个BroadcastReceiverin MainActivity,finish()在触发时调用:
private final BroadcastReceiver finishReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
finish();
}
};
Run Code Online (Sandbox Code Playgroud)
在适当的时候注册/注销它:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// ...
LocalBroadcastManager.getInstance(getApplicationContext())
.registerReceiver(finishReceiver,
new IntentFilter(FirebaseMessagingService.ACTION_FINISH));
}
@Override
protected void onDestroy() {
LocalBroadcastManager.getInstance(getApplicationContext())
.unregisterReceiver(finishReceiver);
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
然后您只需要从onMessageReceived()以下位置发送本地广播:
public static final String ACTION_FINISH = "yourpackagename.ACTION_FINISH";
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
LocalBroadcastManager.getInstance(getApplicationContext())
.sendBroadcast(new Intent(ACTION_FINISH));
}
Run Code Online (Sandbox Code Playgroud)
(FirebaseMessagingService是一个Context子类,不需要传递另一个Context实例给它)
| 归档时间: |
|
| 查看次数: |
664 次 |
| 最近记录: |