[英]BroadCast Receiver Battery Status error
我正在嘗試在我的項目中使用廣播接收器,該接收器監聽充電/不充電的電池狀態,並在每個選項中吐司。 每次我在應用程序中更改充電器狀態時,應用程序都會崩潰。 (如果我在連接了充電器的情況下啟動應用,這會告訴我正確的吐司功能,但是當我為手機充電時,應用會崩潰),這是代碼,在此先感謝
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = this.registerReceiver(null, ifilter);
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
boolean isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
if(isCharging==true){
Toast.makeText(this, "Charging", Toast.LENGTH_SHORT).show();
}
else{
Toast.makeText(this, "Charger not connected", Toast.LENGTH_SHORT).show();
更新我很難理解我應該做的事情。 我很新,所以請耐心等待我:)
這是我做的代碼
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
checkBatteryState(null);
public void checkBatteryState(View sender) {
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = registerReceiver(null, filter);
int chargeState = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
String strState;
switch (chargeState) {
case BatteryManager.BATTERY_STATUS_CHARGING:
case BatteryManager.BATTERY_STATUS_FULL:
strState = "charging";
Toast.makeText(this, strState, Toast.LENGTH_LONG).show();
break;
default:
strState = "not charging";
Toast.makeText(this, strState, Toast.LENGTH_LONG).show();
}
}
}
http://www.vogella.com/tutorials/AndroidBroadcastReceiver/article.html
這是您正在使用的嗎?
也許您還沒有確定自己的意圖是粘滯的。
我的建議是不要使用帶有null參數的registerreceiver。
嘗試使用以下方法創建廣播接收器: 如何將數據發送到尚未啟動的另一個應用程序
將您的Toasts放在onReceive()函數中。
該代碼實際上並沒有注冊接收者,只是進行了粘性廣播。 如果從未發送過廣播,則它將返回null,這將在其余代碼中導致NPE。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.