2

BOOT_COMPLETE インテントを取得したらサービスを開始したい。HTC エクスプローラーには、「電源オフ」と「再起動」の 2 つの再起動オプションがあります。「再起動」を使用すると、BOOT_COMPLETE インテントが適切に取得されます。しかし、「poweroff」を使用すると BOOT_COMPLETE インテントが得られないため、サービスを開始できません。HTC で再起動した後にのみ取得できる意図はありますか?

私はグーグルをサーフィンしてきましたが、ヒントが見つかりませんでした。私は立ち往生しています私を助けてください

このコード<action android:name="android.intent.action.BOOT_COMPLETED"/>をマニフェストで使用しましたが、使用しません

前もって感謝します

4

1 に答える 1

9

一部の HTC デバイスは、実際の再起動ではなく、深い休止状態に似た「高速起動」機能を有効にできるため、BOOT_COMPLETE インテントを与えるべきではありません。また、アプリが SD カードにインストールされていないことを確認してください。そのため、BOOT_COMPLETED を受信できない可能性があります。

これも興味深いかもしれません:

http://commonsware.com/blog/2011/07/13/boot-completed-regression-confirmed.html

http://arthurfmay.blogspot.jp/2011/06/broadcastreceiver-bootcompleted-and.html

特に、「高速ブート」オプションが言及されている場合:

http://groups.google.com/group/android-developers/browse_thread/thread/56562e4de4919dc6

編集:

単に使用するのはどうですか:

Intent.ACTION_SCREEN_ON

次に、サービスが実行されているかどうかを確認できます。

public static boolean ServiceRunning(Context cx) 
{   ActivityManager manager = (ActivityManager) cx.getSystemService(Context.ACTIVITY_SERVICE);
    for (RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE))
    {   if ("<<<service name goes here>>>".equals(service.service.getClassName()))
        {   return true;
        }
    }
    return false;
}

開始するだけでない場合は、次のようにします。

public static void ServiceCheck(Context cx)
{   if(ServiceRunning(cx) == false)
    {   Intent svc = new Intent(".<<<Servicename>>>");
        cx.startService(svc);
        Log.i("Service-Check","Service Starting");
    }
    else
    {   Log.i("Service-Check","Service Existing");
    }
}   
于 2012-05-02T10:24:13.970 に答える