2017-06-18 140 views
0

我在我的android移動應用程序中集成了FCM(Firebase雲消息傳遞)。當通過FCM接收到設備通知時,我想重新啓動android設備(已生根)。但是,當我使用以下代碼重新啓動設備時,設備將重新啓動並再次自動重新啓動(儘管我沒有發送通知)。爲什麼會發生?我該如何解決這個問題?重新啓動Android設備,在FCM通知接收上重新啓動兩次

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

我發送POST請求https://fcm.googleapis.com/fcm/send網址爲正確答案的this問題mentioed。

我的代碼如下

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

恕我直言,這是***用戶體驗不佳,用觸發通知觸發設備重啓。 –

回答

0

我懷疑太快重啓設備不允許FCM來存儲它收到的消息中的信息。

因此,當設備重新啓動消息被下載(並再次傳遞到應用程序)。

我建議在重新啓動前添加幾秒鐘的延遲。

+0

我試過了。這沒有用。這隻發生在某些設備(KitKat)中。它在Lolipop設備中工作正常。 –

+0

你能否檢查你有最新版本的Google Play服務apk? –

+0

也是,是在控制檯中可用的linux命令「sync」嗎?如果是在調用重啓之前嘗試調用它,則可能有助於將數據寫入文件系統。 –