0

度重なる質問だと思いますが、もう一度質問する必要があります。次のコードを入れてもサービスを開始できません

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

    <receiver android:name=".MyBroadcastreceiver" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>         

    <activity
        android:name="com.im.HomeActivity"
        android:clearTaskOnLaunch="true"
        android:label="@string/app_name" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

    <activity
        android:name="com.im.ListActivity"
        android:label="@string/title_activity_list" >
    </activity>

    <service
        android:name="com.im.SyncService"
        android:process=":remote" >
    </service>
</application>

public class MyBroadcastreceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent arg1) {
        Intent intent = new Intent(context, SyncService.class);
        context.startService(intent);
        Log.i("Autostart", "started");          
    }   
}

お願い助けて。

4

2 に答える 2

0

Android 3.1 以降では、アプリケーションがイベントを受け取る前に、ユーザーはアプリケーションを少なくとも 1 回起動する必要がありandroid.intent.action.BOOT_COMPLETEDます。

またandroid:allowBackup="true"、マニフェスト ファイルにも設定されています。アプリがSD カードにインストールされていないことを確認してください。外部ストレージに保存する場合は、android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE代わりに設定する必要があります。

一部の携帯電話 (HTC など) にはFast Bootオプションがあります。これが有効になっている場合、起動BOOT_COMPLETEされません。

別のアプローチはIntent.ACTION_SCREEN_ON、サービスが実行されているかどうかを使用して確認し、実行されていない場合はサービスを開始することです。詳細はこちら

于 2013-04-26T11:29:29.180 に答える