1

ブロードキャスト レシーバーを使用して、デバイスを USB またはカー ドックに接続しようとしていますが、適切な結果が得られません。助けてください?前もって感謝します。受信者コードは次のとおりです。

public class CarDockReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Car Dock Receiver registerd", Toast.LENGTH_SHORT).show();
        switch (intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, -1)) {
        case BatteryManager.BATTERY_PLUGGED_AC:
            Toast.makeText(context, "Battery plugged AC", Toast.LENGTH_SHORT).show();
            break;
        case BatteryManager.BATTERY_PLUGGED_USB:
            Toast.makeText(context, "Battery plugged USB", Toast.LENGTH_SHORT).show();
            break;
        default:
            break;
        }
    }
}

マニフェスト ファイルの受信者は次のとおりです。

<receiver
     android:name=".CarDockReceiver"
     android:enabled="true" >
     <intent-filter>
        <action android:name="android.intent.action.ACTION_POWER_CONNECTED"/>
        <action android:name="android.intent.action.ACTION_POWER_DISCONNECTED"/>
     </intent-filter>
</receiver>
4

2 に答える 2

1

USB デバイスの挿入の検出に関する同様の問題を解決しました。マニフェストでインテント フィルターを指定したため、Android は何かがプラグインされると onResume を呼び出します。これを追加してみてください。

@Override
protected void onResume() {
    super.onResume();

    Intent intent = getIntent();
    if (intent != null) {
        Log.d("onResume", "intent: " + intent.toString());
        if (intent.getAction().equals(UsbManager.ACTION_USB_DEVICE_ATTACHED)) {
            // Do your thing ...
        }

それを実行して正確にログに記録されているものを確認し、その情報を使用して正しいアクションを確認します (上記の例の ACTION_USB_DEVICE_ATTACHED を置き換えます)。

于 2013-10-15T08:18:32.300 に答える