Android에서 홈 및 기타 시스템 버튼을 비활성화하는 방법은 무엇입니까?


80

Android 애플리케이션에서 홈 및 기타 시스템 버튼을 비활성화해야합니다.

예 : MX Player ( Google Play 참조 )-플레이어 화면에서 "잠금"아이콘을 누르면 모든 하드웨어 및 소프트웨어 시스템 버튼이 잠 깁니다.

루팅없이 잘 작동합니다.

Android 버전이 다른 일부 기기에서 테스트했습니다. Kids Lock (플러그인)을 분해하려고했지만 아직 작동 방식에 대한 단서가 없습니다.

다음을 위해 Kids Lock (플러그인)과 같은 솔루션이 필요합니다 MX Player.-홈, 뒤로 및 기타 모든 시스템 버튼을 비활성화합니다.

어떤 제안?


1
stackoverflow.com/questions/17183905/... . 홈 버튼을 비활성화 할 수 없습니다.
Raghunandan 2013

2
@ user1024 질문에 대한 해결책을 찾았습니까? MX 플레이어와 동일한 기능을 수행하고 싶습니다.
Chirag Shah 2013 년

2
MX 플레이어 방식은 다소 흥미 롭습니다. 그들은 실제로 내비게이션 바가 돌아 오지 못하도록 막고 있습니다.
nhaarman 2014 년

이 문제에 대한 해결책을 찾았습니까? 이 버튼을 비활성화하는 방법도 알아 내야합니다. 최소한 멀티 태스킹 버튼을 어떻게 관리 할 수 ​​있습니까?
Portfoliobuilder

내 대답을 확인할 수 있습니다. 원하는 것을 달성하는 데 도움이 될 것 같습니다. stackoverflow.com/a/28603790/3300883
Miguel

답변:


91

먼저, Home그 문제에 대해 버튼이나 다른 버튼을 정말로 비활성화하고 싶다면 길고 열심히 생각하십시오 (예 :Back 버튼) . 이것은해야 할 일이 아닙니다 (적어도 대부분의 경우 이것은 나쁜 디자인입니다. ). 나는 나만을 위해 말할 수 있지만 OS 버튼을 클릭하는 것과 같은 작업을 수행 할 수없는 앱을 다운로드 한 경우 다음으로 해당 앱을 제거하고 매우 나쁜 리뷰를 남깁니다. 또한 귀하의 앱이 App Store에 표시되지 않을 것이라고 생각합니다.

지금...

MX Player다른 응용 프로그램 위에 그릴 수있는 권한을 요청 하는 것 입니다 . 장치 MX 플레이어 권한
Home버튼을 재정의 할 수 없기 때문입니다 Android(최소한 최신 OS 버전에서는 없음). MX Player앱을 "잠그고" Home버튼을 클릭하면 런처 위에 표시됩니다.
좀 더 간단하고 이해하기 쉬운 예를 보려면 Facebook Messenger 앱을 참조하십시오 .

MX 플레이어 Status BarNavigation Bar"재정의" 에 대한 추가 정보를 제공하라는 요청을 받았기 때문에 이러한 주제도 포함하도록 답변을 편집하고 있습니다.

먼저 MX Player는 .NET에서 몰입 형 전체 화면 모드 ( DevBytes Video )를 사용하고 KitKat있습니다.
Android 4.4 (API 레벨 19)는 앱이 진정한 "전체 화면"이되도록하는 setSystemUiVisibility ()에 대한 새로운 SYSTEM_UI_FLAG_IMMERSIVE 플래그를 도입합니다 . 이 플래그를 SYSTEM_UI_FLAG_HIDE_NAVIGATIONSYSTEM_UI_FLAG_FULLSCREEN 플래그 와 결합 하면 탐색 및 상태 표시 줄을 숨기고 앱이 화면의 모든 터치 이벤트를 캡처 할 수 있습니다.

몰입 형 전체 화면 모드가 활성화되면 활동은 모든 터치 이벤트를 계속 수신합니다. 사용자는 시스템 표시 줄이 일반적으로 나타나는 영역을 따라 안쪽으로 스 와이프하여 시스템 표시 줄을 표시 할 수 있습니다. 이렇게하면 SYSTEM_UI_FLAG_HIDE_NAVIGATION 플래그 (및 적용된 경우 SYSTEM_UI_FLAG_FULLSCREEN 플래그) 가 지워져 시스템 표시 줄이 표시됩니다. 이것은 또한 설정된 경우 View.OnSystemUiVisibilityChangeListener를 트리거합니다 . 그러나 잠시 후 시스템 표시 줄을 자동으로 다시 숨기려면 대신 SYSTEM_UI_FLAG_IMMERSIVE_STICKY 플래그 를 사용할 수 있습니다 . 이 모드에서 일시적으로 표시되는 시스템 표시 줄은 일시적인 상태이므로 플래그의 "고정"버전은 리스너를 트리거하지 않습니다.

둘째 : 상태 바 숨기기
: 제 탐색 표시 줄 숨기기
하시기 바랍니다 메모를 그 몰입 전체 화면을 사용하는 경우에만 있지만 KitKat을 숨기고, Status Bar그리고 Navigation Bar뿐만 아니라입니다 KitKat.

2 일과 3 일에 대해 할 말이 많지 않습니다. 당신은 내가 믿는 아이디어를 얻었습니다. 어쨌든 그것은 빠른 읽기입니다. View.OnSystemUiVisibilityChangeListener에 세심한주의를 기울이 십시오 .

내가 의미하는 바를 설명하는 요점을 추가했습니다. 완전하지 않고 수정이 필요하지만 아이디어를 얻을 수 있습니다. https://gist.github.com/Epsiloni/8303531

이것을 구현하는 행운을 빕니다.


1
그렇다면 내비게이션 바를 숨기고 화면을 터치했을 때 다시 팝업 되는 것을 방지 하는 방법은 무엇입니까? 몰입 형 모드에서 나가기 위해 스 와이프 동작을 수행하면 탐색 모음이 즉시 다시 표시되고 숨겨집니다. 또한 잠긴 상태에서는 '몰입 형 스 와이프'로 상태 표시 줄이 강제로 표시되는 경우에도 알림 패널을 꺼낼 수 없습니다. 어떻게하나요?
nhaarman 2014 년

2
좋아요, 이것은 많은 도움이되지만 아직 거기에 도달하지 않았습니다. 두 개의 댓글을 달겠습니다. 하나는 KitKat, 하나는 Jelly Bean입니다. KitKat의 경우 TYPE_SYSTEM_ALERT, SYSTEM_UI_FLAG_HIDE_NAVIGATION및 플래그를 사용 SYSTEM_UI_FLAG_IMMERSIVE_STICKY하면 앱을 종료 할 수 없습니다. 두 시스템 표시 줄은 모두 숨겨져 있습니다. 전원 메뉴가 열리지 않는 한 . 그런 다음 탐색 표시 줄이 다시 나타나고 홈 버튼이 작동합니다. MX 플레이어 는이 경우 탐색 표시 줄을 숨긴 상태로 유지합니다. 따라서 KitKat을 실행하는 장치의 경우 여전히이 문제를 해결해야합니다.
nhaarman 2014 년

1
Jelly Bean (16+)의 경우 IMMERSIVE_STICKY작동하지 않습니다. 따라서 탐색 표시 줄을 표시 할 수 있습니다 (때문에 상태 표시 줄이 숨겨져 있음 SYSTEM_ALERT). 를 사용하여이를 감지 OnSystemUiVisibilityChangeListener하고 플래그를 다시 활성화 할 수 있습니다 . 그러나 어떤 이유로 이것은 홈 버튼을 누르기에 충분한 시간 이상인 1 초 정도 후에 만 ​​작동합니다. MX Player는 사용하지 않지만 IMMERSIVE STICKY(kitkat에 막대가 표시됨) 사용자가 알기 전에 막대가 다시 사라집니다.
nhaarman 2014 년

1
KitKat 용 Github Gist : gist.github.com/nhaarman/8291022 . Jelly Bean 용 Github Gist : gist.github.com/nhaarman/8291070 .
nhaarman 2014 년

7
FYI Assaf, 일부 앱은 잠 가야합니다. 예를 들어 소유자가 하드웨어에 대한 임시 액세스를 허용하는 키오스크 유형 앱입니다. 저는 지금 사진 부스 앱을 만들고 있는데, 사용자 (사진을 찍는 사람)가 사진을 찍는 것 외에 다른 일을 할 수있는 것을 원하지 않습니다. 소유자는 소프트웨어 버튼을 통해 잠금을 해제 할 수 있지만 그렇지 않으면 시스템을 종료해야합니다. 미안하지만 대답의 시작 부분에서 "어머니의 조언"이 저를 문지르며 (그리고 OP를 포함한 다른 사람들이) 잘못된 방식으로 문지릅니다. 답변 해주셔서 감사합니다. 조사하겠습니다.
ntgCleaner

13

나는 shaobin0604의 대답을 따랐고 마침내 다음을 추가하여 HOME 버튼을 잠글 수있었습니다.

<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

AndroidManifest.xml당신이해야 할 모든 복사하는 것입니다 HomeKeyLocker.java에서 shaobin의 lib 디렉토리 프로젝트와처럼 그것을 구현 shaobin의 예 . BTW : 내 AVD의 Android 버전은 Android 4.0.3 입니다.


Android 4.4.4에서 작동합니까? 왜냐하면 4.4.4에서 실행되는 Moto G에서 시도했기 때문입니다. 그것은 나를 위해 작동하지 않았습니다.
venkat

1
그것은 않도록이 라이브러리 단지 비활성화 어려운 가정 button.Moto G 소프트 홈 버튼이없는 일 .. @ 벤 카트
해리 샤르마

경고는 최선은 아니지만 좋은 솔루션이지만 일부 장치 (예 : Nexus 4)에서는 작동하지 않고 홈 버튼을 계속 사용할 수 있다는 점을 명심하십시오!
JacksOnF1re 2015 년

12

Android-HomeKey-Locker 를 사용하여 HOME KEY 및 기타 시스템 키 (예 : BACK KEY 및 MENU KEY)를 비활성화 할 수 있습니다.

이것이 귀하의 신청서에 도움이되기를 바랍니다. 감사.


1
이것은 단지 하드 홈 버튼을 비활성화합니다 ... !!
Harry Sharma 2015 년

나를 위해 완벽하게 작동했습니다. 실제로 모든 물리적 버튼을 비활성화하고 싶을 것입니다. 제 케이스에 맞았 기 때문에 Google Cardboard를 사용하여 홈 버튼을 비활성화합니다.
Matt Cruikshank 2015

최근 앱 버튼을 비활성화하는 방법
user3106818

# shaobin0604 Motorola 장치에서 github 코드가 작동하지 않습니다.
Brajendra Pandey

11

여기에 언급 된 화면 고정 기능을 사용하여 홈 및 최근 버튼 Android 5.0을 비활성화 할 수 있습니다 .

Android 5.0에는 사용자가 작업을 떠나거나 알림으로 인해 중단되는 것을 일시적으로 제한 할 수있는 새로운 화면 고정 API가 도입되었습니다. 예를 들어 Android 또는 단일 목적 또는 키오스크 애플리케이션에서 높은 위험 평가 요구 사항을 지원하기 위해 교육 앱을 개발하는 경우에 사용할 수 있습니다. 앱이 화면 고정을 활성화하면 사용자는 앱이 모드를 종료 할 때까지 알림을 보거나 다른 앱에 액세스하거나 홈 화면으로 돌아갈 수 없습니다.

기기를 키오스크로 잠글 수 있습니다. 탐색 모음은 숨겨지지 않지만 홈 및 최근 버튼은 모드 활성화 방법에 따라 제거하거나 비활성화 할 수 있습니다. 여기 에서이 기능을 테스트 한 후 몇 가지 정보를 썼습니다 .


6

추측 일 뿐이지 만 SYSTEM_ALERT_WINDOW 권한 ( "다른 앱 위에 그리기"로 표시됨, 여기 참조 )을 사용하면 가능할 수 있습니다. 앱을 전체 화면, 시스템 경고 유형 창으로 표시합니다. 이렇게하면 홈 화면을 포함한 다른 모든 앱이 숨겨 지므로 홈을 눌러도 눈에 보이는 효과없이 실제로 비활성화 되지 않습니다 .

MX Player에는이 권한이 선언되어 있으며 Facebook Messenger에는 " 채팅 헤드 " 를 표시하는데도 권한이 있으므로 해결책이 될 수 있습니다.

업데이트 (내 의견에서 추가됨) : 다음으로 터치 이벤트 캡처 / OnSystemUiVisibilityChangeListener 사용과 함께 SYSTEM_UI_FLAG_HIDE_NAVIGATION을 사용하여 기본 동작 (터치시 나타나는 탐색 모음)을 재정의합니다. 또한 몰입 형 종료 제스처가 작동하지 않는다고 말 했으므로 SYSTEM_UI_FLAG_IMMERSIVE_STICKY도 설정해 볼 수 있습니다 (SYSTEM_UI_FLAG_FULLSCREEN 및 SYSTEM_UI_FLAG_HIDE_NAVIGATION 사용).


빠른 테스트 (권한 추가 및 호출) getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);에서는 상태 표시 줄이 숨겨 지지만 (몰입 형 전체 화면을 종료하는 데 사용되는 아래로 스 와이프 동작이 작동하지 않음) 탐색 표시 줄이 표시되지 않음을 보여줍니다. 이 막대의 버튼은 여전히 ​​작동합니다.
nhaarman 2014 년

지금은 SDK가 없지만 다음 아이디어는 SYSTEM_UI_FLAG_HIDE_NAVIGATION을 터치 이벤트 캡처 / OnSystemUiVisibilityChangeListener를 사용하여 기본 동작 (터치에 나타나는 탐색 모음)과 함께 사용하는 것입니다.
molnarm 2014 년

또한 몰입 형 종료 제스처가 작동하지 않는다고 말 했으므로 SYSTEM_UI_FLAG_IMMERSIVE_STICKY도 설정해 볼 수 있습니다 (SYSTEM_UI_FLAG_FULLSCREEN 및 SYSTEM_UI_FLAG_HIDE_NAVIGATION 사용).
molnarm 2014 년

4

이전에는 홈 버튼을 비활성화 할 수 있었지만 지금은 그렇지 않습니다. 사용자를 가두는 악성 소프트웨어 때문입니다.

자세한 내용은 여기에서 확인할 수 있습니다. Android 4.0 이상에서 홈 버튼 비활성화

마지막으로이 다른 질문에서 볼 수 있듯이 뒤로 버튼을 비활성화 할 수 있습니다. 안드로이드에서 뒤로 버튼 비활성화


2
그를 넥서스 4에 말했듯이 난 그냥 MX 플레이어를 테스트하고, 정말 홈 버튼 = S 잠금
포조 앱

뒤로 버튼은 설계된 방식으로 작동합니다. 뒤로 버튼을 비활성화하지 않는 것이 좋습니다.
Raghunandan 2013

@Raghunandan의 요점을 확인하고 이에 동의합니다. 그래도 뒤로 버튼 비활성화 할 수 있으며 개발자가이를 고려할 것이라고 믿습니다. 그가 앱의 유용성을 깰 수 있다면 그의 사용자는 그에게 알려줄 것입니다.
Alvaro Cavalcanti 2013

MX Player를 설치하고 테스트하십시오. 홈 버튼을 비활성화합니다. 모든 시스템 버튼을 비활성화합니다. MX Player는 Kids Lock (플러그인)을 사용합니다. Kids Lock (플러그인)을 분해하려고했지만 작동 방식에 대한 단서가 없습니다. 이것이 제가이 질문을하는 이유입니다.
user1024 jul.

1
이 답변은 mx 플레이어가이 기능을 구현하는 방식을 제공 하지 않습니다 .
nhaarman 2014 년

3

Android 5.0 이상을 타겟팅하는 경우. 다음을 사용할 수 있습니다.

Activity.startLockTask()

이것은 질문에 대한 답을 제공하지 않습니다. 작성자에게 비평이나 설명을 요청하려면 게시물 아래에 댓글을 남겨주세요. 언제든지 자신의 게시물에 댓글을 달 수 있으며, 충분한 평판얻으면 모든 게시물댓글 수 있습니다 . - 리뷰에서
user1140237

1
@ user1140237 왜 안돼?
Trilarion

1
당신이 정상적인 응용 프로그램은 안 장치 관리자, 인 경우에만 수행 할 수 있습니다

3

먼저 메서드를 만듭니다.

public void hideNavigationBar() {
        final View decorView = this.getWindow().getDecorView();
        final int uiOptions =
                View.SYSTEM_UI_FLAG_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
                        | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                        | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;

        Timer timer = new Timer();
        TimerTask task = new TimerTask() {
            @Override
            public void run() {
                YourActivityName.this.runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        decorView.setSystemUiVisibility(uiOptions);

                    }
                });
            }
        };

        timer.scheduleAtFixedRate(task, 1, 2);

    }

그런 다음 onCreate()활동 방법에 따라 호출합니다 . onResume()메서드에서 다시 호출하십시오 . 그런 다음 다음과 같이 활동에 다른 방법을 추가 할 수 있습니다.

@Override
    public void onWindowFocusChanged(boolean hasFocus) {
        super.onWindowFocusChanged(hasFocus);
        hideNavigationBar();
    }

그것이 될 것입니다. 다음에 사용자가 화면을 터치 할 때까지 화면을 잠그고 Timer 클래스에서 지연을 변경할 수 있으며 해당 인스턴스에 대한 변경을 허용 한 다음 화면을 다시 잠급니다.


2

나도 언젠가 이것을 검색하고 있었고 마침내 필요에 따라 할 수있었습니다. 즉, 탐색 표시 줄에 액세스 할 수없고 상태 표시 줄에 액세스 할 수 없습니다. 전원 버튼을 길게 눌러도 전원 메뉴 나 탐색 버튼이 표시되지 않습니다. @Assaf Gamliel 덕분에 그의 대답은 나를 올바른 길로 인도했습니다. 나는 약간의 수정과 함께이 튜토리얼을 따랐다 . Type을 지정하는 동안 WindowManager.LayoutParams.TYPE_SYSTEM_ERROR대신 지정 했습니다 WindowManager.LayoutParams.TYPE_PHONE. 그렇지 않으면 "오버레이"가 시스템 표시 줄을 숨기지 않습니다. 플래그, 높이, 너비 등을 가지고 놀 수 있으므로 원하는대로 작동 할 수 있습니다.


1

홈 버튼을 비활성화하는 방법을 모르겠습니다. 내 지식이있는 한 나는 다음 링크를 얻었다.

링크를 참조하십시오 : -http : //developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME

키 코드 상수 : 홈 키. 이 키는 프레임 워크에서 처리되며 응용 프로그램에 전달되지 않습니다.

하지만 뒤로 버튼을 비활성화 할 수 있습니다. 다음 코드가 도움이되기를 바랍니다.

@Override
public void onBackPressed() {
    //return nothing 
    return;
}

2
문제는 MX 플레이어 기능을 구체적으로 모방하는 것입니다.
nhaarman

1

오래된 주제를 새로 고칩니다. 홈 버튼 (물리적 또는 가상)을 눌렀을 때 내 활동이 접히지 않도록 할 수있었습니다. 활동 onCreate()방법에 대한 코드는 다음과 같습니다 .

super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_alarm_screen);
        context = getApplicationContext();
        int windowType;
        if (Build.VERSION.SDK_INT>=26) windowType = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
        else windowType = WindowManager.LayoutParams.TYPE_TOAST;
        final WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                windowType,
                WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON
                        | WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED
                        | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                        | WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD
                        | WindowManager.LayoutParams.FLAG_FULLSCREEN,
                PixelFormat.TRANSLUCENT
        );
        wm = (WindowManager) getApplicationContext()
                .getSystemService(Context.WINDOW_SERVICE);

        mTopView = (ViewGroup) getLayoutInflater().inflate(R.layout.activity_alarm_screen, null);
        getWindow().setAttributes(params);
        //Set up your views here
        testView = mTopView.findViewById(R.id.test);
        wm.addView(mTopView, params);

API 26 이상에서는 사용자로부터 화면 오버레이 권한을 받아야합니다. Android 7 및 8에서 테스트되었습니다.


0

ICS onwords에서 홈 버튼을 비활성화 할 수 없지만 다음과 같이 다른 버튼을 비활성화 할 수 있습니다.

@Override
public boolean dispatchKeyEvent(KeyEvent keyEvent){
   return true;
}

1
문제는 MX 플레이어 기능을 구체적으로 모방하는 것입니다.
nhaarman

0

Post ICS, 즉 Android 4+, 즉 보안상의 이유로 HomeButton의 재정의가 제거되어 애플리케이션이 멀웨어로 판명 될 경우 사용자 종료를 활성화합니다.

또한 사용자가 응용 프로그램에서 벗어나지 못하게하는 것은 좋은 습관이 아닙니다. 그러나 잠금 화면 응용 프로그램을 만들고 있으므로 활동을 Launcher로 선언하여 HomeButton을 누르면 응용 프로그램을 다시 시작하고 그대로 유지되도록 할 수 있습니다 (사용자는 약간의 깜박임 만 알아 차릴 수 있음). 화면에서).

다음 링크를 통해 이동할 수 있습니다.

http://dharmendra4android.blogspot.in/2012/05/override-home-button-in-android.html


문제는 MX 플레이어 기능을 구체적으로 모방하는 것입니다.
nhaarman

0

솔직히 4.0 이후의 새로운 API 레벨에서 홈 버튼을 비활성화하는 것은 불가능합니다. 그렇게하는 것도 바람직하지 않습니다. 그러나 다음을 재정 의하여 뒤로 버튼을 차단할 수 있습니다.

public void onBackPressed() {
    // do not call super onBackPressed.
}

홈 버튼을 재정의하려면 타이머를 사용할 수 있습니다. 예를 들어, 메인 화면이 화면인지 아닌지 또는 패키지가 상단에 있는지 여부를 확인할 때마다 타이머를 사용할 수 있습니다 (링크를받을 수 있습니다. ), single_top 플래그를 사용하여 활동을 표시합니다.

이렇게하면 홈 버튼을 눌러도 앱을 맨 위로 가져올 수 있습니다.

또한 이러한 종류의 앱은 정말 성 가시고 개발해서는 안되므로 앱을 종료 할 방법이 있는지 확인하십시오.

즐거운 코딩입니다.

추신 : 홈 버튼을 눌렀을 때 홈 이벤트를 가로 챌 수 없습니다.

on attach to window 메서드 및 keyguard 메서드는 사용할 수 있지만 4.0 이상의 API 수준에는 사용할 수 없습니다.


문제는 MX 플레이어 기능을 구체적으로 모방하는 것입니다.
nhaarman 2014 년

@NiekHaarman, 정말 아닙니다. 문제는 "홈, 뒤로 및 기타 모든 시스템 버튼을 비활성화"하는 것입니다. 특히 MIMIC이 아닌 MX 플레이어처럼.
Adam

@adam no,이 답변을 트리거 한 질문에 대한 현상금은 MX 플레이어 기능을 모방하도록 특별히 요청했습니다.
nhaarman 2014-08-05

0

회전을 사용하면 예외가 발생하므로 다음을 사용하여 내 활동을 수정했습니다.

HomeKeyLocker locker;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_splash);

    locker = new HomeKeyLocker();               
    locker.lock(this);
}

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    super.onSaveInstanceState(savedInstanceState);
    locker.unlock();
}

@Override
public void onConfigurationChanged(Configuration config) {
    super.onConfigurationChanged(config);
    locker.lock(this);
}

@ Lê Quang Duy 제안을 사용해야합니다.


0

응용 프로그램을 위해 태블릿을 잠그는 데 필요한 응용 프로그램을 작업 중입니다. 먼저 내 앱을 MainLauncher로 설정 한 다음 AndroidView를 사용하여 작업 표시 줄을 잠급니다. 마지막으로 태블릿을 차단합니다. 각 장치 모델에는 차단 기능이 있으므로 여러 태블릿 모델에서 사용하도록 지정하는 기능이 아닙니다.

그러나 전반적으로 모든 사람에게 효과적입니다. 명령을 사용할 수 있습니다.

Java.Lang.Runtime.GetRuntime().Exec("su -c sed -i '/VOLUME_UP/s/^# //g' /system/usr/keylayout/Generic.kl");

버튼을 비활성화하는 예입니다. 그러나 모든 것은 "/ system / usr / keylayout / ..."폴더 내의 시스템 파일 변경을 기반으로합니다. 참고 : 루팅 된 기기에서만 작동합니다.

아직 개발 중이지만 시도하고있는 또 다른 방법은 StreamWrite 및 StreamReader를 사용하여 RootDirectory에 액세스하고 전체 파일을 다시 작성하여 단추를 비활성화 및 활성화하는 것입니다.

도움이 되었기를 바랍니다.

그리고 질문이 남아 있습니다.


0

루팅 된 (또는 사용자 지정 ROM) Android 장치 에서 소프트 탐색완전히 제거하려는 사람은 다음을 수정할 수 있습니다.build.prop 는 시스템 폴더 내에서 텍스트 파일을 .

다음 변수 / 값을 설정하십시오.

gemu.hw.mainkeys=1

이것은 공급 업체가 물리적 버튼이있을 때 소프트 탐색을 비활성화하는 데 사용하는 것입니다.


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.