'기기 하드웨어 관리자'로 작동하는 애플리케이션을 작성해야합니다. 사용자는 자신의 취향에 따라 하드웨어 기능을 활성화 또는 비활성화 할 수 있어야합니다. 나는 아래의 응용 프로그램 UI의 스크린 샷을 추가하고 :프로그래밍 방식으로 Android 기기의 하드웨어 액세스를 차단하십시오.
이 설정은 응용 프로그램의 로컬 데이터베이스에 저장됩니다. 내가 처리해야 할 일은 다음과 같습니다 :
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>
Wi-Fi 및 블루투스 용 브로드 캐스트를 올바르게 수신합니다. 카메라 동작이나 USB 연결 및 연결 끊김으로 브로드 캐스트를 수신하지 않습니다.
질문 1 : 카메라 및 USB 감지에 사용했던 인 텐트 필터에 문제가 있습니까?
2 단계 : 사용자가이 하드웨어를 사용하지 못하도록 차단하고 싶습니다. 사용자가 내 수신기 클래스의 onReceive() 메소드에서 동작을 감지하여 시작한 직후에 블루투스 또는 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가 켜져 있거나 연결되어 있고 해당 장치가 꺼져 있거나 프로그래밍 방식으로 연결이 끊어졌습니다.
그러나 사용자는 블루투스 또는 WiFi를 전혀 시작할 수 없어야합니다. 즉, WiFi 및 Bluetooth 버튼을 비활성화하는 것입니다.
질문 2 : 가능합니까?
도움이나 의견을 보내 주시면 감사하겠습니다.
감사합니다. DPM은 카메라 차단에 도움이되었습니다. –