そこに大きな問題があります。起動後に起動するアプリケーションを開発しています。BOOT_COMPLETED インテント アクションを使用することで簡単に実現できます。少なくとも Android 3.1 までは、インストールされているすべてのアプリが「停止」状態になり (そうですか?)、明示的に起動してすべての BroadcastReceivers を登録する必要があります。そのため、アプリを初めて起動し (残りはサービスに基づいているため、ランチャーにはアイコンがない)、レシーバーを登録するためのアクティビティを追加しました。奇妙なことに、2.2 では完全に動作しますが、Android 4.0 および 4.1 (および 3.1 以上のすべてだと思います) では、「サービス インテントを開始できません {...} が見つかりません」というエラーが発生します。私のcmp = smth/.serviceであり、smth.serviceではないのは奇妙だと思います。この問題に関連するこれらのシステムの違いを説明していただけますか?
私のマニフェスト(アプリケーション部分、残りは関係ありません):
<application android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<receiver android:name=".ReceiverCall" android:exported="false" android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.USER_PRESENT" />
<action android:name="android.intent.action.SCREEN_ON" />
<action android:name="android.intent.action.SCREEN_OFF" />
<action android:name="com.android.ondeath" />
</intent-filter>
</receiver>
<service android:name="TheService" android:label="@string/app_name" android:exported="false" android:enabled="true" />
<activity android:name=".Main"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
また、レシーバー:
public class ReceiverCall extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if(TheService.running() == false)
{
Log.d("Service", "ReceiverCall onReceive()");
context.startService(new Intent(context, TheService.class));
}
}
}
私のアクティビティは開始したばかりで、レイアウトはありません。それ自体に「finish()」しかない onCreate を実行します。
私を正しい解決策に導く可能性のある提案をありがとう:)
@編集
これがあなたの意図したことであることを願っています。
09-28 16:26:09.509: E/Trace(599): error opening trace file: No such file or directory (2)
09-28 16:26:09.639: I/ActivityThread(599): Pub com.android.calendar: com.android.providers.calendar.CalendarProvider2
09-28 16:26:09.869: D/ExchangeService(550): !!! EAS ExchangeService, onStartCommand, startingUp = true, running = false
09-28 16:26:09.929: D/dalvikvm(182): WAIT_FOR_CONCURRENT_GC blocked 0ms
09-28 16:26:10.140: D/dalvikvm(182): GC_EXPLICIT freed 544K, 13% free 11241K/12871K, paused 23ms+38ms, total 214ms
09-28 16:26:10.259: D/dalvikvm(615): Not late-enabling CheckJNI (already on)
09-28 16:26:10.289: I/ActivityManager(182): Start proc co.appdemo for broadcast co.appdemo/.ReceiverCall: pid=615 uid=10044 gids={3003, 1015, 1028}
09-28 16:26:10.629: E/Trace(615): error opening trace file: No such file or directory (2)
09-28 16:26:10.729: D/Service(615): running()
09-28 16:26:10.729: D/Service(615): ReceiverCall onReceive()
09-28 16:26:10.749: W/ActivityManager(182): Unable to start service Intent { cmp=co.appdemo/.TheService }: not found
09-28 16:26:11.079: D/dalvikvm(294): GREF has increased to 201