2016-10-31 5 views
0

私はFirebaseプッシュ通知に取り組んでおり、MainActivityを閉じたいと思っています。 onMessageReceived()が呼び出されると、アプリケーションは終了するはずです。私もContextを渡していますが、動作しません。この場合、申請書がなくなると通知が送られます。私のコード:Firebaseでプッシュ通知を使用してアクティビティを閉じるにはどうすればいいですか?

MainActivity.java

public class MainActivity extends FragmentActivity { 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     new FirebaseMessagingService(MainActivity.this); 
    } 
} 

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(); 
    } 
} 

答えて

3

あなたがトリガされたときfinish()を呼び出すこと、MainActivityBroadcastReceiverを定義することができます。

private final BroadcastReceiver finishReceiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
     finish(); 
    } 
}; 

適切な登録/それを登録解除:

@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(); 
} 

そして、あなたは単にonMessageReceived()からローカルブロードキャストを送信する必要があります。

public static final String ACTION_FINISH = "yourpackagename.ACTION_FINISH"; 

@Override 
public void onMessageReceived(RemoteMessage remoteMessage) { 
    LocalBroadcastManager.getInstance(getApplicationContext()) 
     .sendBroadcast(new Intent(ACTION_FINISH)); 
} 

FirebaseMessagingServiceContextサブクラスである(、する必要はありません別のContextインスタンスをそれに渡します)

関連する問題