Android:设备启动时电池充电监视器无法自动启动
我正在尝试编写一个电池监控应用程序,它的功能之一是跟踪充电的时间和相关日期 首先,我使用SharedReferences编写了主活动类中的所有内容,它确实有效。然而,我希望即使在后台也能记录充电次数,所以我在谷歌上搜索并认为WakefulBroadcastReceiver+IntentService可能是最有效/最简单的方法 我错了。我被困在这里,我想我现在遇到的问题是,显示器的IntentService部分甚至没有启动!我想我可能在舱单上写错了什么,但我就是找不到 这是我的密码: AndroidManifest.xml java MainActivity.java太长,所以我不在这里发布。但是,它应该不会有任何问题,除非我必须调用活动文件中的BootReceiver/RechargeMonitor,我想我不必这样做,因为manifest+BootReceiver应该负责autostart,这甚至不会是一个问题 我现在遇到的问题是,监视器似乎没有启动,我没有看到任何祝酒词 我要确保的另一件事是,共享引用应该可以在同一个应用程序中的任何地方访问,只要我的名字是正确的。我已经在好几个地方看到了这一点,但我需要一个可靠的答案 谢谢Android:设备启动时电池充电监视器无法自动启动,android,background-process,battery,autostart,Android,Background Process,Battery,Autostart,我正在尝试编写一个电池监控应用程序,它的功能之一是跟踪充电的时间和相关日期 首先,我使用SharedReferences编写了主活动类中的所有内容,它确实有效。然而,我希望即使在后台也能记录充电次数,所以我在谷歌上搜索并认为WakefulBroadcastReceiver+IntentService可能是最有效/最简单的方法 我错了。我被困在这里,我想我现在遇到的问题是,显示器的IntentService部分甚至没有启动!我想我可能在舱单上写错了什么,但我就是找不到 这是我的密码: Androi
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.mobiledevices.batteryapp" >
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme" >
<activity android:name=".MainActivity" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
<service
android:name=".RechargeMonitor"
android:exported="false" />
</application>
package com.mobiledevices.batteryapp;
import android.content.Intent;
import android.content.Context;
import android.support.v4.content.WakefulBroadcastReceiver;
public class BootReceiver extends WakefulBroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent){
Intent startServiceIntent = new Intent(context, RechargeMonitor.class);
startWakefulService(context, startServiceIntent);
}
}
package com.mobiledevices.batteryapp;
import android.app.IntentService;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.BroadcastReceiver;
import android.content.SharedPreferences;
import android.os.BatteryManager;
import android.widget.Toast;
public class RechargeMonitor extends IntentService {
public RechargeMonitor(){
super("RechargeMonitor");
}
@Override
protected void onHandleIntent(Intent intent){
Toast.makeText(this, "Service Started", Toast.LENGTH_LONG).show();
this.registerReceiver(this.batteryinfoReceiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
}
private BroadcastReceiver batteryinfoReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getExtras().getBoolean(BatteryManager.EXTRA_PRESENT) &&
intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0)!=0 &&
intent.getIntExtra(BatteryManager.EXTRA_STATUS, 0)==BatteryManager.BATTERY_STATUS_CHARGING){
SharedPreferences settings = getSharedPreferences(MainActivity.PREF_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
int count = settings.getInt("COUNT", 0);
editor.putInt("COUNT", count+1);
editor.commit();
}
}
};
}