public class MainActivity extends Activity {
public TextView batteryTxt;
private BroadcastReceiver receiver;
BroadcastReceiver mybroadcast = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
int batterylevel = intent.getIntExtra("level", 0);
batteryTxt.setText("Battery Level: " + Integer.toString(batterylevel) + "%");
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
batteryTxt = (TextView) findViewById(R.id.textView1);
IntentFilter filter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
registerReceiver(mybroadcast, filter);
}
}
虽然我没有在上面的程序中使用 intent.putExtra(), intent.getIntExtra(“level”,0)如何工作?
答案 0 :(得分:1)
这是IntentFilter
,会向Intent
发送BatteryManager
以检查ACTION_BATTERY_CHANGED
。 BatteryManager
然后调用intent.putIntExtra
将int
放在Intent
中。
答案 1 :(得分:0)
当执行操作“ACTION_BATTERY_CHANGED”时,意图是您的BroadcastReceiver从系统接收的内容。在这种情况下,它是关于电池电量的信息,“0”是默认值(如果没有额外命名的“级别”)。意图不是由此应用中的任何活动创建的。
答案 2 :(得分:0)
您需要阅读有关BroadcastReceivers和Intents的文档。
http://developer.android.com/reference/android/content/BroadcastReceiver.html
http://developer.android.com/reference/android/content/Intent.html
基本上,这两种机制是Android在应用程序和进程之间传输状态的首选方法。
简而言之:
广播接收器是为Intents注册的,每当意图被“触发”或“发射”时,对应于您的意图注册的“Mime-Type”,该广播接收器将被激活。此时,您的广播接收器将有机会通过发送的意图处理传递给它的状态。
在你的情况下:
您已创建一个广播接收器,该电视接收器已注册(可能)用于电池服务意图。这意味着每次电池服务向所有相关方发送意图时,您都会收到一条消息。电池服务包括其意图某些数据,这些数据对于对电池状态感兴趣的应用,服务或过程是有用的。在这种情况下,它是“水平”。