Android上的小米和联想设备上的应用程序被杀后,未收到GCM通知

时间:2017-02-17 08:52:06

标签: android notifications google-cloud-messaging

任何人都可以帮助我接收有关小米和联想设备的通知,即使应用程序被杀后(不再在后台)?

修改1

我添加了GCM广播接收器。这是代码

AndroidManifest.xml中的

 <receiver
       android:name="com.don.offers.broadcast_receiver.GcmBroadcastReceiver"
       android:permission="com.google.android.c2dm.permission.SEND" >
       <intent-filter>
           <!-- Receives the actual messages. -->
           <action android:name="com.google.android.c2dm.intent.RECEIVE" />
           <category android:name="com.google.android.gcm.demo.app" />
       </intent-filter>
   </receiver>

GcmBroadcastReceiver.java

public class GcmBroadcastReceiver extends WakefulBroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        ComponentName comp = new ComponentName(context.getPackageName(),
                RegistrationIntentService.class.getName());
        // Start the service, keeping the device awake while it is launching.
        startWakefulService(context, (intent.setComponent(comp)));
        setResultCode(Activity.RESULT_OK);
    }
}

它解决了我在MI设备上的问题,但没有在联想设备上解决。

由于

2 个答案:

答案 0 :(得分:1)

联想手机正在使用后台任务杀手停止后台应用程序,在应用程序菜单中通过取消限制来隐藏任务杀手

答案 1 :(得分:0)

在具有MIUI的设备上,您可以要求用户使用以下功能在手机的自动启动列表中添加您的应用:

 private void addAppToAutoStartList() {
  AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(this);
  alertDialogBuilder.setTitle("Warning!");
  alertDialogBuilder.setMessage("Please add this app to the Auto Start list of your device for better performance.");
  alertDialogBuilder.setPositiveButton("Add", new DialogInterface.OnClickListener() {
   @Override public void onClick(DialogInterface dialogInterface, int i) {
    dialogInterface.dismiss();
    try {
     AppPreferences.getInstance(HomeActivity.this).setMiSpecialSetting(true);
     Intent intent = new Intent();
     intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity"));
     startActivity(intent);
    } catch (Exception e) {
     Toast.makeText(HomeActivity.this, "Unable to add!", Toast.LENGTH_SHORT).show();
    }
   }
  });
  alertDialogBuilder.setNegativeButton("Ignore", new DialogInterface.OnClickListener() {
   @Override public void onClick(DialogInterface dialog, int arg1) {
    dialog.dismiss();
   }
  });
  AlertDialog alertDialog = alertDialogBuilder.create();
  alertDialog.show();
 }  

通过检查制造商

来调用此方法
if(android.os.Build.MANUFACTURER.equalsIgnoreCase("xiaomi")) { addAppToAutoStartList(); 
}

<强>结论: 1.通过这种方式,用户将您的应用程序添加到自动启动列表,然后您的应用程序将能够毫无问题地获得推送通知。 2.如果你有任何预定的工作要运行,那么你即使在一把钥匙清洁后也可以运行你的工作,但是有一个限制,你的工作将会运行,但不是根据你的时间和灵活性,它将在1之后随时调用一天和下一个电话可能会在2天后到来,因此无法保证定期通话。但这是我现在可以看到MIUI的唯一方式,如自定义操作系统。我已经在许多具有android 5到7的小米设备中进行了测试,并且每个设备的结果都相同。