「デバイスハードウェア管理者」として機能するアプリケーションを作成する必要があります。ユーザーは、好みに応じてハードウェアの機能を有効または無効にできる必要があります。以下にアプリケーションUIのスクリーンショットを追加します。
これらの設定は、アプリケーションのローカルデータベースに保存されます。私が何とかしたことは次のとおりです。
ステップ1:これらすべてのアクションを検出するためのブロードキャストレシーバーを登録しました。
<receiver android:name=".HardwareActionListener" >
<intent-filter>
<action android:name="android.intent.action.CAMERA_BUTTON" >
</action>
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.media.action.STILL_IMAGE_CAMERA" />
</intent-filter>
<intent-filter>
<action android:name="android.hardware.action.NEW_PICTURE" >
</action>
</intent-filter>
<intent-filter>
<action android:name="android.media.action.IMAGE_CAPTURE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.UMS_CONNECTED" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.UMS_DISCONNECTED" />
</intent-filter>
<intent-filter>
<action android:name="android.bluetooth.adapter.action.STATE_CHANGED" >
</action>
</intent-filter>
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED" >
</action>
</intent-filter>
<intent-filter>
<action android:name="android.net.wifi.WIFI_STATE_CHANGED_ACTION" >
</action>
</intent-filter>
<intent-filter>
<action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
<meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
</intent-filter>
</receiver>
WifiとBluetoothの放送をきちんと受けています。カメラアクションまたはUSB接続と切断に関するブロードキャストが受信されません。
質問1:カメラとUSBの検出に使用したインテントフィルターに何か問題がありますか?
ステップ2:ユーザーがこれらのハードウェアを使用できないようにブロックしたい。ユーザーがBluetoothまたはWi-Fiを起動した直後に、レシーバークラスのonReceive()メソッドでアクションを検出することにより、BluetoothまたはWi-Fiを無効にすることができました。
if (intent.getAction().equalsIgnoreCase(
"android.bluetooth.adapter.action.STATE_CHANGED")) {
int extraBTState = intent.getIntExtra(BluetoothAdapter.EXTRA_STATE,
BluetoothAdapter.ERROR);
switch (extraBTState) {
case BluetoothAdapter.STATE_CONNECTING:
BluetoothAdapter mBluetoothAdapter = BluetoothAdapter
.getDefaultAdapter();
mBluetoothAdapter.disable();
break;
case BluetoothAdapter.STATE_ON:
BluetoothAdapter mBluetoothAdapter1 = BluetoothAdapter
.getDefaultAdapter();
mBluetoothAdapter1.disable();
break;
case BluetoothAdapter.STATE_CONNECTED:
BluetoothAdapter mBluetoothAdapter2 = BluetoothAdapter
.getDefaultAdapter();
mBluetoothAdapter2.disable();
break;
case BluetoothAdapter.STATE_OFF:
Toast.makeText(context, "Bluetooth access not allowed",
Toast.LENGTH_SHORT).show();
break;
}
} else if (intent.getAction().equalsIgnoreCase(
"android.net.wifi.WIFI_STATE_CHANGED")) {
int extraWifiState = intent.getIntExtra(
WifiManager.EXTRA_WIFI_STATE,
WifiManager.WIFI_STATE_UNKNOWN);
switch (extraWifiState) {
case WifiManager.WIFI_STATE_DISABLED:
Toast.makeText(context, "Wifi enabling not allowed",
Toast.LENGTH_SHORT).show();
break;
case WifiManager.WIFI_STATE_ENABLED:
WifiManager wifiManager1 = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
wifiManager1.setWifiEnabled(false);
break;
case WifiManager.WIFI_STATE_ENABLING:
WifiManager wifiManager2 = (WifiManager) context
.getSystemService(Context.WIFI_SERVICE);
wifiManager2.setWifiEnabled(false);
break;
}
}
そのため、BluetoothまたはWiFiがオンまたは接続されていることを検出し、プログラムでオフまたは切断します。
ただし、ユーザーがBluetoothまたはWiFiをまったく起動できないようにする必要があります。つまり、WiFiとBluetoothのボタンを無効にします。
質問2:それは可能ですか?
どんな助けや提案もいただければ幸いです。