Từ mọi thứ tôi đã thấy trên Stack Exchange và các nơi khác, tôi đã thiết lập mọi thứ một cách chính xác để khởi động IntentService khi hệ điều hành Android khởi động. Rất tiếc, nó không bắt đầu khi khởi động và tôi không gặp bất kỳ lỗi nào. Có thể các chuyên gia có thể giúp ...
Rõ ràng:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.phx.batterylogger"
android:versionCode="1"
android:versionName="1.0"
android:installLocation="internalOnly">
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.BATTERY_STATS" />
<application android:icon="@drawable/icon" android:label="@string/app_name">
<service android:name=".BatteryLogger"/>
<receiver android:name=".StartupIntentReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
</application>
</manifest>
BroadcastReceiver cho Startup:
package com.phx.batterylogger;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class StartupIntentReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Intent serviceIntent = new Intent(context, BatteryLogger.class);
context.startService(serviceIntent);
}
}
CẬP NHẬT : Tôi đã thử tất cả các đề xuất bên dưới và tôi đã thêm ghi nhật ký chẳng hạn như Log.v("BatteryLogger", "Got to onReceive, about to start service");
vào trình xử lý onReceive của StartupIntentReceiver và không có gì được ghi lại. Vì vậy, nó thậm chí còn không đến được BroadcastReceiver.
Tôi nghĩ rằng tôi đang triển khai APK và thử nghiệm chính xác, chỉ cần chạy Debug trong Eclipse và bảng điều khiển cho biết nó cài đặt thành công nó vào máy tính bảng Xoom của tôi tại \ BatteryLogger \ bin \ BatteryLogger.apk. Sau đó, để kiểm tra, tôi khởi động lại máy tính bảng rồi xem nhật ký trong DDMS và kiểm tra Dịch vụ đang chạy trong cài đặt hệ điều hành. Tất cả điều này có đúng không, hay tôi đang thiếu một cái gì đó? Một lần nữa, bất kỳ sự giúp đỡ nào cũng được đánh giá cao.
Log.v("BatteryLogger", "Got to onReceive, about to start service");
trình xử lý onReceive và nó không bao giờ hiển thị trong nhật ký. Vì vậy, người nghe được không (?)