如何在安卓中检查从广播接收器接收的操作类型

  • 本文关键字:接收器 广播 类型 操作 android
  • 更新时间 :
  • 英文 :


我目前正在研究安卓中的广播接收器,我不知道如何检查宽投接收器中调用的动作类型。下面是我的清单文件和 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;
    }
};  

最新更新