我目前正在研究安卓中的广播接收器,我不知道如何检查宽投接收器中调用的动作类型。下面是我的清单文件和 java 文件:
安卓清单:
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:typeface="serif">
<receiver android:name=".Main2Activity">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
</intent-filter>
</receiver>
</application>
爪哇文件:
package com.example.ashis.assignment1;
public class Main2Activity extends BroadcastReceiver {
/*
* @Override protected void onCreate(Bundle savedInstanceState) {
* super.onCreate(savedInstanceState);
* setContentView(R.layout.activity_main2); }
*/
@Override
public void onReceive(Context context, Intent intent) {
Toast.makeText(context, "Wallpaper has been changed......", Toast.LENGTH_LONG).show();
}
}
是否可以检查我的Main2Activity.java
文件中清单文件中描述的操作类型?
由于下面的代码是你在清单
中添加的接收器
<receiver android:name=".Main2Activity">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
</intent-filter>
</receiver>
您可以使用intent.getAction()
来检查发生的操作类型,例如:
public class Main2Activity extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String message = "";
switch (intent.getAction()) {
case Intent.ACTION_POWER_CONNECTED:
message = "Power Connected";
break;
case Intent.ACTION_POWER_DISCONNECTED:
message = "Power Disconnected";
break;
}
Toast.makeText(context.getApplicationContext(), message, Toast.LENGTH_SHORT).show();
}
}
在你的onReceive()方法中
@Override
public void onReceive(Context context, Intent intent) {
String action=intent.getAction();
if(action.equals("android.intent.action.ACTION_POWER_CONNECTED")){
Toast.makeText(context,"action",Toast.LENGTH_LONG).show();
}
}
就这么简单:
String action = intent.getAction();
试试这个
<receiver android:name=".PowerStatusReceiver ">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
</intent-filter>
</receiver>
然后在onCreate
activity
中注册这样的接收者
// register our power status receivers
IntentFilter powerConnectedFilter = new IntentFilter(Intent.ACTION_POWER_CONNECTED);
registerReceiver(PowerStatusReceiver , powerConnectedFilter);
IntentFilter powerDisconnectedFilter = new IntentFilter(Intent.ACTION_POWER_DISCONNECTED);
registerReceiver(PowerStatusReceiver , powerDisconnectedFilter);
定义我们的广播接收器并将BATTERY_STATUS请求嵌入其中
BroadcastReceiver PowerStatusReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
IntentFilter ifilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
Intent batteryStatus = context.registerReceiver(null, ifilter);
// Are we charging / charged?
int status = batteryStatus.getIntExtra(BatteryManager.EXTRA_STATUS, -1);
isCharging = status == BatteryManager.BATTERY_STATUS_CHARGING ||
status == BatteryManager.BATTERY_STATUS_FULL;
}
};