3

AlarmManager を使用して、毎分実行されるサービスを開始しています。ただし、「アプリケーション blabla が予期せず停止しました」というメッセージが表示されます。デバイスの電源を入れたときに [強制終了] ボタンが表示される警告ダイアログ。私が持っている唯一のデバッグオプションはWIFIであり、デバイスを再起動するたびに接続のIPが変更されるため、エラーが何であるかわかりません.

サービスはブートなしで正常に実行されます。

アプリケーションで実行されている BroadcastReceiver は次のとおりです。

    public class FPBootReceiver extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        android.os.Debug.waitForDebugger();

        Intent bootintent = new Intent(context, FPService.class);
        PendingIntent pi = PendingIntent.getService(context, 0, bootintent, PendingIntent.FLAG_UPDATE_CURRENT);

        long nextUpdateTimeMillis = DateUtils.MINUTE_IN_MILLIS;
        Time nextUpdateTime = new Time();
        nextUpdateTime.set(nextUpdateTimeMillis);

        AlarmManager FPAlarm = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
        FPAlarm.setRepeating(AlarmManager.RTC, System.currentTimeMillis(), nextUpdateTimeMillis, pi);
    }
}

マニフェスト:

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

<application
    android:icon="@drawable/pc"
    android:label="@string/app_name" >
    <service android:name=".FPService" />

    <receiver android:enabled="true" android:name="mypackage.FPBootReceiver"
        android:permission="android.permission.RECEIVE_BOOT_COMPLETED">

    <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
            <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>

    </receiver>


    <activity
        android:name=".CF_Aachen"
        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>

私がこれらで間違っていることがわかりますか?

更新:ブートのデバッグに成功し、 AndroidRuntime(2781): java.lang.RuntimeException: Unable to instantiate receiver mypackage.FPBootReceiver: java.lang.ClassNotFoundException: mypackage.FPBootReceiver in loader dalvik.system.PathClassLoader を取得しています

4

2 に答える 2

2

Android システムはレシーバーを認識できません。完全なパッケージが実際に「mypackage」でない限り、パスを確認してください。「.mypackage.FPBootReceiver」にするか、フルパスを指定する必要があります。

于 2012-06-16T01:34:11.443 に答える
2

アクティビティの同じクラスの下に BroadcastReceiver クラスを作成しました。そのため、それを見つけることができませんでした。

mypackage に別のクラス ファイルを作成し、そこにクラスを作成したところ、解決されました。

アドバイスしてくれたすべての人に感謝します。

于 2012-06-16T04:42:47.457 に答える