2017-06-18 15 views
0

私はアンドロイドモバイルアプリにFCM(Firebase Cloud Messaging)を統合しました。 FCMを通じてデバイスに通知を受け取ったときにアンドロイドデバイス(ルート)を再起動します。しかし、次のコードを使ってデバイスを再起動すると、デバイスが再起動し、自動的に再起動します(通知は送信しませんでしたが)。なぜこれが起こるのですか?これをどうすれば解決できますか?Androidデバイスを再起動し、FCM通知で2回再起動します。

Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot now"}); 

this質問の答えにmentioedように私はhttps://fcm.googleapis.com/fcm/send URLにPOSTリクエストを送信します。私はあまりにも早く、デバイスを再起動するとFCMは、それがメッセージを受信した情報を保存することはできませんと思われる

public class MyFirebaseMessagingService extends FirebaseMessagingService { 
      String restart = "restart"; 
      String take_screenshot = "take_Screenshot"; 

      @Override 
      public void onMessageReceived(RemoteMessage remoteMessage) { 
       Map<String, String> data = remoteMessage.getData(); 
       final String myCustomKey = data.get("my_custom_key"); 
       reboot(); 
      } 
      private void reboot() { 
       try { 
        Runtime.getRuntime().exec(new String[]{"su", "-c", "reboot now"}); 
       } catch (IOException e) { 
       } 
      } 
} 
+0

この問題のデバッグを改善するために、スタックトレースを送信してください。 –

+0

IMHO、プッシュ通知付きのデバイス再起動をトリガーするのは悪いユーザーエクスペリエンス***です。 –

答えて

0

を次のように

私のコードです。

したがって、デバイスを再起動すると、メッセージがダウンロードされ(アプリに再度配信されます)。

再起動するまでに数秒の遅延を追加することをお勧めします。

+0

私はそれを試みました。それはうまくいかなかった。これは、一部のデバイス(KitKat)でのみ発生します。 Lolipopデバイスで正常に動作します。 –

+0

最新バージョンのGoogle Playサービスapkをお持ちであることを確認できますか? –

+0

も、linuxコマンド "sync"はコンソールで利用できますか?再起動を呼び出す前にそれを呼び出すと、ファイルシステムにデータを書き込むのに役立ちます。 –

関連する問題