2015-12-08 8 views
14

私のアプリでは、いつもバックグラウンドで実行する必要があります。すべてのデバイスで、Xiaomi以外は正常に動作しています。サービスの実行を維持するためのアプリの設定で自動起動。xiaomiでアプリケーションの自動起動をプログラムで有効にするには

このように、ユーザーが決して実行しないため、文法的にauto startを有効にする方法を教えてください。

ご協力いただければ幸いです。

+4

あなたは、その機能にアクセスすることができます小米科技からいくつかのAPIがあるコードからまでとしない限り、それを行うことができるよう文句を言いません。私は自動開始マネージャーがアプリであると推測しています(システムアプリの特権を持って、xiaomiの一部が変更されているため)。したがって不可能です。一方、デバイスがルートされている場合は、実際に自動起動マネージャを無効にすることができます。 –

+10

@Radix whatsapp、facebook、これをやっているもっと多くのアプリはどうですか? –

+4

私は、Xiaomiとホワイトリストの関係を結んでいると仮定しています。しかし、ちょうど推測です。 –

答えて

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.アプリケーション設定画面で、「自動起動を有効にする」の永久設定を1つ行います。 2.あなたのホーム画面にdismissオプション付きのダイアログ/カードを表示します。最後に、この自動チェックの問題が発生しているデバイスについてのみ、このチェックを行います。 –

5

自動開始を直接有効にすることはできませんが、自動開始設定画面にリダイレクトしてユーザーにアプリの電源をオンにすることができます。 xiaomi、oppoおよび生体内の電話機には以下のソリューションを使用してください。自動起動画面が存在する場合は起動されます。

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

oppolololopは動作していますが、動作していません。 – 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

私はin vivoで自動起動マネージャー画面にリダイレクトする必要があります。 "com.iqoo.secure.MainGuideActivity"は途中で停止しています – user3069590

関連する問題