2015-12-08 27 views
14

我在我的应用程序服务,需要在所有后台运行的时候,它做工精细,除了小米的所有设备,我看过一些在那里,我们需要启用自动启动应用的设置以保持服务正常运行。如何启用自动开始为我在小米的应用程序编程

所以,请告诉我如何Ø启用自动启动Pro语法,因为用户永远不会做到这一点。

任何帮助将不胜感激。

+4

你不会是能够做到这一点的代码之前,除非有来自小米一些API,它使您可以访问该功能。我猜测自动启动管理器是一个应用程序(具有系统应用程序的权限,因为小米修改的操作系统的一部分),因此不可能。另一方面,如果设备被植入,您实际上可以禁用自动启动管理器。 –

+10

@Radix howsapp,脸书和更多的应用程序如何做到这一点? –

+4

我假设他们与小米有联系,并将其列入白名单。但它只是一个猜测。 –

回答

6

试试这个......它为我工作。它将打开屏幕以启用自动启动。但是如果你尝试从那里禁用它将关闭应用程序。我想出了一个解决方案。直到那时你可以使用它作为解决方案。

String manufacturer = "xiaomi"; 
     if(manufacturer.equalsIgnoreCase(android.os.Build.MANUFACTURER)) { 
      //this will open auto start screen where user can enable permission for your app 
      Intent intent = new Intent(); 
      intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")); 
      startActivity(intent); 
     } 
+1

thnx,为我工作 – Pratswinz

+0

Mohit每当它问你如何过滤只问一次是否有任何回调方法。 –

+0

@ M.Yogeshwaran回调不存在,因为我明确地试图调用该活动。 –

0

您可以通过以下做到这一点:

 if (manufactXiaomi.equalsIgnoreCase(android.os.Build.MANUFACTURER)) { 
     if (!session.getVisibilityOfAutoStartDialog()) {Intent intent = new Intent(); 
      intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")); 
      startActivity(intent);}} 

,如果你想保持运行的服务后台,你需要改变Check This

威力上面的代码工作设备的一些设置你

+0

如何通过询问只有通过使用这个曾经被要求每次 –

+0

@ M.Yogeshwaran编程,我们不能检查自动启动状态解决。 1.在你的应用程序设置屏幕上有一个永久设置“启用自动启动”。 2.在主屏幕上显示一个对话框/卡片,并带有解除选项。最后做这个检查只有设备有这个自动启动问题。 –

5

您不能启用自动直接启动,但您可以重定向用户到自动启动设定画面,并要求用户将其打开您的应用。为xiaomi,oppo和vivo手机使用以下解决方案。如果存在自动启动屏幕,将启动。

try { 
     Intent intent = new Intent(); 
     String manufacturer = android.os.Build.MANUFACTURER; 
     if ("xiaomi".equalsIgnoreCase(manufacturer)) { 
      intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")); 
     } else if ("oppo".equalsIgnoreCase(manufacturer)) { 
      intent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")); 
     } else if ("vivo".equalsIgnoreCase(manufacturer)) { 
      intent.setComponent(new ComponentName("com.vivo.permissionmanager", "com.vivo.permissionmanager.activity.BgStartUpManagerActivity")); 
     } 

     List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 
     if (list.size() > 0) { 
      context.startActivity(intent); 
     } 
    } catch (Exception e) { 
     Crashlytics.logException(e); 
    } 
+3

体内活动名称不正确。也许他们会从不同的版本更改它。 – desidigitalnomad

+1

在oppo lollypop工作,但棉花糖不工作 – user3069590

1
try this 


if ("xiaomi".equalsIgnoreCase(str)) 
{ 
intent.setComponent(new ComponentName("com.miui.securitycenter", "com.miui.permcenter.autostart.AutoStartManagementActivity")); 
        } 
else if ("oppo".equalsIgnoreCase(str)) 
{ 
intent.setComponent(new ComponentName("com.coloros.safecenter", "com.coloros.safecenter.permission.startup.StartupAppListActivity")); 
        } 
else if ("vivo".equalsIgnoreCase(str)) 
{ 
    intent.setComponent(new ComponentName("com.iqoo.secure", "com.iqoo.secure.MainGuideActivity.")); 
} 
+1

我需要重定向到自动启动管理器屏幕在体内,“com.iqoo.secure.MainGuideActivity”它正在中途停止 – user3069590

相关问题