0

'기기 하드웨어 관리자'로 작동하는 애플리케이션을 작성해야합니다. 사용자는 자신의 취향에 따라 하드웨어 기능을 활성화 또는 비활성화 할 수 있어야합니다. 나는 아래의 응용 프로그램 UI의 스크린 샷을 추가하고 :프로그래밍 방식으로 Android 기기의 하드웨어 액세스를 차단하십시오.

Application 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> 

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 : 가능합니까?

도움이나 의견을 보내 주시면 감사하겠습니다.

답변

1

카메라 및 USB 감지에 사용했던 인 텐트 필터에 문제가 있습니까?

예. 예를 들어 :

  • <category>은 일반적으로 확실히 방송에 사용되지 않고하지 LAUNCHER 분류하여 필터에
  • android.media.action.STILL_IMAGE_CAMERA 및 기타 활동의 행동, 행동

질문이 방송되지 않습니다 : 그게 가능하니?

SDK 앱에서 안드로이드에 소스 코드를 다운로드하고, 필요에 맞게 수정하고, 컴파일하여 ROM mod를 만든 다음, 가능한 모든 장치에 ROM mod를 설치하십시오.

관련 문제