因为是动态注册broadcast的,xml就没有做处理,在这里不附上了。
还有一个问题就是,加入onDestroy后退出时报错,提示没有注册,但已经是动态注册了啊。
package com.example.batterylow;
import java.util.Timer;
import android.os.Bundle;
import android.os.SystemClock;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.view.Menu;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends Activity {
TextView textView;
private BroadcastReceiver batteryLevelReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = (TextView) this.findViewById(R.id.battery);
batteryLevel();
IntentFilter batteryLevelFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(batteryLevelReceiver, batteryLevelFilter);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(batteryLevelReceiver);
}
private void batteryLevel() {
batteryLevelReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
context.unregisterReceiver(this);
int rawlevel = intent.getIntExtra("level", -1);
int scale = intent.getIntExtra("scale", -1);
int level = -1;
if (rawlevel >= 0 && scale > 0) {
level = (rawlevel * 100) / scale;
}
textView.setText( level + "%");
}
};
}
}
多写了一句。自己仔细看。<preclass="brush:java;toolbar:true;auto-links:false;">publicvoidonReceive(Contextcontext,Intentintent){context.unregisterReceiver(this);<preclass="brush:java;toolbar:true;auto-links:false;">几个意思?你想要干嘛?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。