2017-02-17 15 views
4

Может ли кто-нибудь помочь мне получать уведомления о устройствах Xiaomi и Lenovo даже после того, как приложение будет убито (не более в фоновом режиме)?Не получать уведомления GCM после того, как приложение было убито на устройствах Xiaomi и Lenovo в Android

Редактировать 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 устройстве, но не на устройствах Lenovo.

Благодаря

+0

Hi. Вы видели ответы в этой статье [http://stackoverflow.com/q/39504805/4625829)? –

+0

Возможный дубликат [Android-приложение, не получающее уведомление Firebase, когда приложение остановлено из лотка с несколькими задачами] (http://stackoverflow.com/questions/39504805/android-app-not-receiving-firebase-notification-when-app- is-stop-from-multi-t) –

+0

@AL Да, но это не то, что я ищу. –

ответ

1

Lenovo мобильные используют фоновую задачу киллера для остановки фоновых приложений, чтобы скрыть убийцу задач по снимите галочку ограничить в меню приложения

+0

Могу я ограничить его программным путем? –

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. Таким образом, пользователь добавит ваше приложение в список автозапуска, и ваше приложение сможет получать push-уведомления без каких-либо проблем. 2. Если у вас есть запланированная работа для выполнения, вы сможете выполнять свою работу даже после того, как один ключ будет чистым, но есть ограничение, ваша работа будет выполняться, но не в соответствии с вашим временем и гибкостью, она будет вызвана в любое время после 1 день и следующий звонок может наступить через 2 дня, поэтому нет гарантии периодического звонка. Но это единственный способ увидеть MIUI как пользовательскую ОС. И я тестировал это во многих устройствах Xiaomi, имеющих андроид 5-7, и каждый, где результаты одинаковы.