Làm cách nào để tắt nút Home và các nút hệ thống khác trong Android?


80

Tôi cần tắt Trang chủ và các nút hệ thống khác trong ứng dụng Android của mình.

Ví dụ: MX Player ( xem tại Google Play ) - bạn có thể nhấn biểu tượng "khóa" trên màn hình trình phát và nó khóa tất cả các nút hệ thống phần cứng và phần mềm.

Nó hoạt động tốt mà KHÔNG CÓ ROOTING.

Tôi đã thử nghiệm nó trên một số thiết bị có các phiên bản Android khác nhau. Tôi đã cố gắng tháo rời Kids Lock (plugin) nhưng vẫn chưa biết cách hoạt động của nó.

Tôi cần giải pháp tương tự như Kids Lock (plugin) để MX Player: - tắt Home, Back và tất cả các nút hệ thống khác.

Bất kỳ đề xuất?


1
stackoverflow.com/questions/17183905/… . bạn không thể tắt nút trang chủ.
Raghunandan

2
@ user1024 bạn đã tìm thấy giải pháp nào cho câu hỏi của mình chưa? Vì tôi cũng muốn thực hiện chức năng tương tự như trong MX Player.
Chirag Shah

2
Cách MX Player khá thú vị. Họ thực sự đang áp dụng thanh điều hướng để quay trở lại.
nhaarman

Bạn đã bao giờ tìm ra giải pháp cho vấn đề này chưa? Tôi cũng đang cần tìm cách tắt các nút này. Ít nhất, làm cách nào tôi có thể quản lý nút đa nhiệm.
portfoliobuilder

Bạn có thể kiểm tra câu trả lời của tôi, tôi nghĩ rằng sẽ giúp bạn đạt được những gì bạn muốn stackoverflow.com/a/28603790/3300883
Miguel

Câu trả lời:


91

Trước tiên, hãy suy nghĩ thật lâu và thật kỹ nếu bạn thực sự muốn vô hiệu hóa Homenút hoặc bất kỳ nút nào khác cho vấn đề đó (ví dụ: Backnút), đây không phải là điều nên làm (ít nhất là trong hầu hết các trường hợp, đây là một thiết kế tồi ). Tôi chỉ có thể nói cho bản thân mình, nhưng nếu tôi đã tải xuống một ứng dụng không cho phép tôi làm điều gì đó như nhấp vào nút OS, điều tiếp theo tôi làm là gỡ cài đặt ứng dụng đó và để lại một đánh giá rất tệ. Tôi cũng tin rằng ứng dụng của bạn sẽ không được giới thiệu trên App Store.

Hiện nay...

Lưu ý rằng MX Playerđang yêu cầu quyền vẽ trên các ứng dụng khác: Quyền của MX Player
Vì bạn không thể ghi đè Homenút trên Androidthiết bị (ít nhất là không có trong các phiên bản hệ điều hành mới nhất). MX Playertự vẽ lên trên trình khởi chạy của bạn khi bạn "khóa" ứng dụng và nhấp vào Homenút.
Để xem ví dụ về điều đó đơn giản hơn một chút và dễ hiểu hơn, bạn có thể xem Ứng dụng Facebook Messenger .

Vì tôi được yêu cầu cung cấp thêm một số thông tin về MX Player Status BarNavigation Bar"ghi đè", tôi đang chỉnh sửa câu trả lời của mình để bao gồm các chủ đề này.

Điều đầu tiên, MX Player đang bật Chế độ toàn màn hình đắm chìm ( DevBytes Video ) KitKat.
Android 4.4 (API cấp 19) giới thiệu cờ SYSTEM_UI_FLAG_IMMERSIVE mới cho setSystemUiVisibility () cho phép ứng dụng của bạn thực sự ở chế độ "toàn màn hình". Cờ này, khi kết hợp với các SYSTEM_UI_FLAG_HIDE_NAVIGATIONSYSTEM_UI_FLAG_FULLSCREEN cờ, da điều hướng và thanh trạng thái và cho phép chụp ứng dụng của bạn tất cả các sự kiện liên lạc trên màn hình.

Khi chế độ toàn màn hình đắm chìm được bật, hoạt động của bạn sẽ tiếp tục nhận được tất cả các sự kiện cảm ứng. Người dùng có thể hiển thị các thanh hệ thống bằng cách vuốt vào trong dọc theo vùng mà các thanh hệ thống thường xuất hiện. Thao tác này sẽ xóa cờ SYSTEM_UI_FLAG_HIDE_NAVIGATION (và cờ SYSTEM_UI_FLAG_FULLSCREEN , nếu được áp dụng) để các thanh hệ thống trở nên hiển thị. Điều này cũng kích hoạt View.OnSystemUiVisibilityChangeListener của bạn , nếu được đặt. Tuy nhiên, nếu bạn muốn các thanh hệ thống tự động ẩn lại sau một lúc, bạn có thể sử dụng cờ SYSTEM_UI_FLAG_IMMERSIVE_STICKY để thay thế . Lưu ý rằng phiên bản "cố định" của cờ không kích hoạt bất kỳ trình nghe nào vì các thanh hệ thống được hiển thị tạm thời trong chế độ này đang ở trạng thái tạm thời.

Thứ hai: Ẩn thanh trạng thái
Thứ ba: Ẩn thanh điều hướng
Xin lưu ý rằng mặc dù sử dụng toàn màn hình đắm chìm chỉ dành cho KitKat, nhưng ẩn Status BarNavigation Barkhông chỉ dành cho KitKat.

Tôi không có nhiều điều để nói về thứ 2 và thứ 3, Bạn có thể hiểu được ý tưởng mà tôi tin rằng, đó là một cách đọc nhanh trong mọi trường hợp. Chỉ cần đảm bảo rằng bạn chú ý đến View.OnSystemUiVisibilityChangeListener .

Tôi đã thêm một Gist giải thích ý của tôi, nó chưa hoàn chỉnh và cần sửa một chút nhưng bạn sẽ hiểu. https://gist.github.com/Epsiloni/8303531

Chúc may mắn khi thực hiện điều này, và vui vẻ!


1
Vậy làm cách nào để ẩn thanh điều hướng và ngăn nó bật lên trở lại khi chạm vào màn hình? Và khi bạn thực hiện chuyển động vuốt để thoát khỏi chế độ nhập vai, thanh điều hướng sẽ hiển thị và ẩn lại ngay lập tức. Hơn nữa, không thể kéo bảng thông báo ra khi bị khóa, ngay cả khi 'vuốt nhập vai' buộc thanh trạng thái hiển thị. sao làm được vậy?
nhaarman

2
Được rồi, điều này giúp ích rất nhiều, nhưng chúng tôi vẫn chưa hoàn thành. Tôi sẽ đặt hai nhận xét, một cho KitKat, một cho Jelly Bean. Đối với KitKat, sử dụng cờ TYPE_SYSTEM_ALERT, SYSTEM_UI_FLAG_HIDE_NAVIGATIONSYSTEM_UI_FLAG_IMMERSIVE_STICKY, không có cách thoát khỏi ứng dụng. Cả hai thanh hệ thống luôn ẩn. Trừ khi menu nguồn được mở. Sau đó, thanh điều hướng lại xuất hiện, vi nút home hoạt động. MX Player quản lý để giữ thanh điều hướng ẩn trong trường hợp đó. Vì vậy đối với các thiết bị chạy KitKat, chúng ta vẫn cần khắc phục lỗi này.
nhaarman

1
Đối với Jelly Bean (16+), IMMERSIVE_STICKYkhông hoạt động. Do đó, có thể hiển thị thanh điều hướng (thanh trạng thái vẫn bị ẩn vì SYSTEM_ALERT). Chúng tôi có thể phát hiện điều này bằng cách sử dụng OnSystemUiVisibilityChangeListenervà bật lại các cờ. Tuy nhiên, bởi một số lý do, điều này chỉ hoạt động sau một giây hoặc lâu hơn, quá đủ thời gian để nhấn nút Home. MX Player không sử dụng IMMERSIVE STICKY(các thanh xuất hiện trên kitkat), nhưng các thanh này lại biến mất trước khi bạn biết.
nhaarman

1
Github Gist cho KitKat: gist.github.com/nhaarman/8291022 . Github Gist cho Jelly Bean: gist.github.com/nhaarman/8291070 .
nhaarman

7
FYI Assaf, một số ứng dụng CẦN bị khóa. Ví dụ: ứng dụng kiểu kiosk mà chủ sở hữu cho phép truy cập tạm thời vào phần cứng. Tôi đang tạo một ứng dụng gian hàng ảnh ngay bây giờ và tôi không muốn người dùng (người được chụp ảnh của họ) có thể làm bất cứ điều gì ngoài việc chụp ảnh (và một số việc khác). Chủ sở hữu có thể mở khóa thông qua một nút phần mềm, nhưng nếu không thì cần phải tắt. Tôi xin lỗi, nhưng "lời khuyên của mẹ" của bạn ở đầu câu trả lời của bạn đã khiến tôi (và tôi chắc rằng những người khác bao gồm OP) đã sai. Cảm ơn bạn vì câu trả lời của bạn, tôi sẽ xem xét nó.
ntgCleaner

13

Tôi đã làm theo câu trả lời của shaobin0604 và cuối cùng tôi đã khóa được nút HOME, bằng cách thêm:

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

đến AndroidManifest.xmlTất cả bạn phải làm là sao chép HomeKeyLocker.javatừ lib shaobin của dự án của bạn và thực hiện nó như thế nào trong ví dụ shaobin của . BTW: Phiên bản Android AVD của tôi là Android 4.0.3 .


Nó có hoạt động trong Android 4.4.4 không? Bởi vì, nó đã thử nó trong Moto G của tôi đang chạy trong 4.4.4. Nó không hiệu quả với tôi.
venkat

1
Thư viện này chỉ vô hiệu hóa nút home cứng.Moto G có nút home mềm nên nó không hoạt động .. @ venkat
Harry Sharma

Cảnh báo là một giải pháp tốt, nếu không phải là tốt nhất, nhưng hãy nhớ rằng trên một số thiết bị (tức là Nexus 4), tính năng này sẽ không hoạt động và nút trang chủ vẫn có thể sử dụng được!
JacksOnF1re

12

Bạn có thể sử dụng Android-HomeKey-Locker để tắt HOME KEY và các phím hệ thống khác (chẳng hạn như BACK KEY và MENU KEY)

Hy vọng điều này sẽ giúp bạn trong ứng dụng của bạn. Cảm ơn.


1
Điều này chỉ vô hiệu hóa nút home cứng ... !!
Harry Sharma

Làm việc hoàn hảo cho tôi. Tôi có thể muốn tắt tất cả các nút vật lý, thực sự ... Sử dụng cái này cho Google Cardboard để tắt nút Home, vì trường hợp của tôi chạm vào nó.
Matt Cruikshank

cách tắt nút ứng dụng gần đây
user3106818

# shaobin0604 Mã github của bạn không hoạt động trên thiết bị Motorola.
Brajendra Pandey

11

Bạn có thể tắt nút home và nút gần đây trên Android 5.0 bằng cách sử dụng tính năng ghim màn hình được đề cập ở đây :

Android 5.0 giới thiệu một API ghim màn hình mới cho phép bạn tạm thời hạn chế người dùng rời khỏi tác vụ của bạn hoặc bị gián đoạn bởi các thông báo. Điều này có thể được sử dụng, ví dụ: nếu bạn đang phát triển một ứng dụng giáo dục để hỗ trợ các yêu cầu đánh giá mức cược cao trên Android, hoặc một ứng dụng dành cho mục đích hoặc kiosk. Sau khi ứng dụng của bạn kích hoạt tính năng ghim màn hình, người dùng không thể xem thông báo, truy cập các ứng dụng khác hoặc quay lại màn hình chính cho đến khi ứng dụng của bạn thoát khỏi chế độ này.

Bạn có thể khóa thiết bị để làm kiosk. Thanh điều hướng không bị ẩn, nhưng nút home và gần đây có thể bị xóa hoặc tắt tùy thuộc vào cách bạn kích hoạt chế độ. Tôi đã viết một số thông tin sau khi thử nghiệm tính năng này ở đây .


6

Chỉ là phỏng đoán, nhưng tôi nghĩ rằng với quyền SYSTEM_ALERT_WINDOW (được hiển thị dưới dạng "Vẽ qua các ứng dụng khác", xem tại đây ) thì có thể: hiển thị ứng dụng của bạn dưới dạng cửa sổ loại cảnh báo hệ thống , toàn màn hình . Bằng cách này, nó sẽ ẩn bất kỳ ứng dụng nào khác, ngay cả màn hình chính, vì vậy nếu bạn nhấn Home, nó sẽ không thực sự bị vô hiệu hóa mà không có bất kỳ hiệu ứng hiển thị nào.

MX Player đã khai báo quyền này và Facebook Messenger cũng có quyền này để hiển thị " đầu trò chuyện " trên bất kỳ thứ gì - vì vậy nó có thể là giải pháp.

Cập nhật (được thêm từ nhận xét của tôi): Tiếp theo, sử dụng SYSTEM_UI_FLAG_HIDE_NAVIGATION kết hợp với ghi lại các sự kiện chạm / sử dụng OnSystemUiVisibilityChangeListener để ghi đè hành vi mặc định (thanh điều hướng xuất hiện khi chạm). Ngoài ra, vì bạn cho biết cử chỉ nhập vai thoát không hoạt động, bạn cũng có thể thử đặt SYSTEM_UI_FLAG_IMMERSIVE_STICKY (với SYSTEM_UI_FLAG_FULLSCREEN và SYSTEM_UI_FLAG_HIDE_NAVIGATION).


Một thử nghiệm nhanh - thêm quyền và gọi getWindow().addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);- cho thấy rằng điều này sẽ ẩn thanh trạng thái (và chuyển động vuốt xuống như được sử dụng để thoát khỏi chế độ toàn màn hình đắm chìm không hoạt động) chứ không phải thanh điều hướng. Các nút trên thanh này vẫn hoạt động.
nhaarman

Tôi hiện không có SDK nhưng ý tưởng tiếp theo của tôi sẽ là sử dụng SYSTEM_UI_FLAG_HIDE_NAVIGATION kết hợp với ghi lại các sự kiện chạm / sử dụng OnSystemUiVisibilityChangeListener để ghi đè hành vi mặc định (thanh điều hướng xuất hiện khi chạm).
molnarm

Ngoài ra, vì bạn cho biết cử chỉ nhập vai thoát không hoạt động, bạn cũng có thể thử đặt SYSTEM_UI_FLAG_IMMERSIVE_STICKY (với SYSTEM_UI_FLAG_FULLSCREEN và SYSTEM_UI_FLAG_HIDE_NAVIGATION).
molnarm

4

Trước đây, bạn có thể tắt nút Home, nhưng bây giờ thì không. Đó là do phần mềm độc hại sẽ bẫy người dùng.

Bạn có thể xem thêm thông tin chi tiết tại đây: Tắt nút Home trong Android 4.0+

Cuối cùng, nút Quay lại có thể bị vô hiệu hóa, như bạn có thể thấy trong câu hỏi khác này: Tắt nút quay lại trong Android


2
Tôi chỉ thử nghiệm máy nghe nhạc MX như ông nói trên Nexus 4, và nó thực sự khóa nút home = S
Pozzo Apps

nút quay lại có nghĩa là hoạt động theo cách mà nó được thiết kế. Tôi khuyên bạn không nên tắt nút quay lại.
Raghunandan

Tôi thấy quan điểm của bạn, @Raghunandan, và đồng ý với nó. Tuy nhiên, nút Quay lại thể bị vô hiệu hóa và tôi tin tưởng nhà phát triển sẽ tính đến vấn đề này. Nếu anh ta cố gắng phá vỡ khả năng sử dụng của ứng dụng, người dùng của anh ta sẽ cho anh ta biết.
Alvaro Cavalcanti,

thử cài đặt MX Player và kiểm tra nó. Nó vô hiệu hóa nút HOME. Nó vô hiệu hóa tất cả các nút hệ thống. MX Player sử dụng Kids Lock (plugin). Tôi đã cố gắng tháo rời Kids Lock (plugin) nhưng vẫn chưa biết cách hoạt động của nó. Đây là lý do tại sao tôi hỏi câu hỏi này.
user1024

1
Lưu ý rằng câu trả lời này không cung cấp cách trình phát mx triển khai tính năng này.
nhaarman

3

Nếu bạn nhắm mục tiêu Android 5.0 trở lên. Bạn đã có thể sử dụng:

Activity.startLockTask()

Điều này không cung cấp câu trả lời cho câu hỏi. Để phê bình hoặc yêu cầu làm rõ từ tác giả, hãy để lại nhận xét bên dưới bài đăng của họ - bạn luôn có thể nhận xét về bài đăng của chính mình và khi bạn có đủ uy tín, bạn sẽ có thể nhận xét về bất kỳ bài đăng nào . - Từ xét
user1140237

1
@ user1140237 Tại sao không?
Trilarion

1
Điều này chỉ có thể được thực hiện nếu bạn là một quản trị viên thiết bị, mà một ứng dụng bình thường không nên
Ron

3

Đầu tiên, hãy tạo một phương thức:

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);

    }

Sau đó, bạn gọi nó trên onCreate()phương pháp hoạt động của bạn. Gọi nó một lần nữa trên onResume()phương thức. Sau đó, bạn có thể thêm một phương pháp khác vào hoạt động của mình như sau:

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

Đó sẽ là nó. Hãy nhớ rằng nó sẽ khóa màn hình cho đến lần tiếp theo người dùng chạm vào màn hình, trong lớp Timer, bạn có thể thay đổi độ trễ và nó sẽ cho phép bạn thay đổi mọi thứ cho trường hợp đó, sau đó nó sẽ khóa màn hình lại.


2

Đôi khi tôi cũng đã tìm kiếm điều này và cuối cùng đã có thể làm điều đó khi tôi cần, tức là Thanh điều hướng không thể truy cập được, thanh trạng thái không thể truy cập được, ngay cả khi bạn nhấn và giữ nút nguồn, cả menu nguồn và nút điều hướng đều không được hiển thị. Cảm ơn @Assaf Gamliel, câu trả lời của anh ấy đã đưa tôi đến con đường đúng đắn. Tôi đã làm theo hướng dẫn này với một số sửa đổi nhỏ. Trong khi chỉ định Loại, tôi đã chỉ định WindowManager.LayoutParams.TYPE_SYSTEM_ERRORthay vì chỉ định WindowManager.LayoutParams.TYPE_PHONE, nếu không "lớp phủ" của chúng tôi sẽ không ẩn các thanh hệ thống. Bạn có thể chơi xung quanh các Cờ, Chiều cao, Chiều rộng, v.v. để nó hoạt động như bạn muốn.


1

tôi không biết làm thế nào để di chuyển nút trang chủ. miễn là kiến ​​thức của tôi, tôi có liên kết sau.

tham khảo liên kết: - http://developer.android.com/reference/android/view/KeyEvent.html#KEYCODE_HOME

Hằng số mã khóa: Phím Home. Khóa này được xử lý bởi khuôn khổ và không bao giờ được chuyển đến các ứng dụng.

Nhưng, chúng ta có thể điều chỉnh nút quay lại. hy vọng mã sau đây sẽ giúp bạn ra ngoài.

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

2
Câu hỏi là bắt chước cụ thể chức năng của trình phát MX.
nhaarman

1

Làm mới một chủ đề cũ. Tôi đã có thể đạt được rằng hoạt động của tôi không bị gập lại khi nhấn nút màn hình chính (vật lý hoặc ảo). Đây là mã của tôi cho onCreate()phương pháp hoạt động :

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);

Trên API 26 trở lên, bạn cần nhận được quyền lớp phủ màn hình từ người dùng. Đã thử nghiệm trên Android 7 và 8.


0

Bạn không thể tắt nút Trang chủ từ ICS onwords nhưng có thể tắt các nút khác như sau

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

1
Câu hỏi là bắt chước cụ thể chức năng của trình phát MX.
nhaarman

0

Đăng ICS tức là Android 4+, phần ghi đè của HomeButton đã bị xóa vì lý do bảo mật, để cho phép người dùng thoát trong trường hợp ứng dụng hóa ra là phần mềm độc hại.

Thêm vào đó, việc không cho phép người dùng điều hướng khỏi ứng dụng không phải là một phương pháp thực sự tốt. Tuy nhiên, vì bạn đang tạo một ứng dụng màn hình khóa, những gì bạn có thể làm là khai báo hoạt động dưới dạng Trình khởi chạy, để khi nhấn nút HomeButton, nó sẽ chỉ khởi động lại ứng dụng của bạn và vẫn ở đó (người dùng sẽ không nhận thấy gì ngoài một chút nhấp nháy nhẹ trong màn hình).

Bạn có thể đi qua liên kết sau:

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


Câu hỏi là bắt chước cụ thể chức năng của trình phát MX.
nhaarman

0

Thành thật mà nói, không thể tắt nút home ít nhất là trên các cấp api mới, tức là từ 4.0 trở đi. Cũng không nên làm như vậy. Tuy nhiên, bạn có thể chặn nút quay lại bằng cách ghi đè

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

Để ghi đè nút trang chủ, bạn có thể sử dụng bộ đếm thời gian chẳng hạn, và sau mỗi lần kiểm tra xem màn hình chính có phải là màn hình của bạn hay không, hoặc gói của bạn có ở trên cùng hay không, (tôi chắc chắn rằng bạn sẽ nhận được liên kết đến nó ), và hiển thị hoạt động của bạn bằng cờ single_top.

Bằng cách đó, ngay cả khi nhấn nút trang chủ, bạn vẫn có thể đưa ứng dụng của mình lên đầu.

Ngoài ra, hãy đảm bảo rằng ứng dụng có cách để thoát, vì những loại ứng dụng như vậy thực sự có thể gây phiền nhiễu và không bao giờ được phát triển.

Chúc bạn viết mã vui vẻ.

Tái bút: Không thể chặn sự kiện trang chủ khi nhấn nút trang chủ.

Bạn có thể sử dụng phương thức đính kèm vào cửa sổ và cả phương thức bảo vệ phím, nhưng không thể sử dụng cho các cấp api từ 4.0 trở đi.


Câu hỏi là bắt chước cụ thể chức năng của trình phát MX.
nhaarman

@NiekHaarman, không hẳn vậy. Câu hỏi đặt ra là "vô hiệu hóa Trang chủ, Quay lại và tất cả các nút hệ thống khác." Cụ thể là trình phát LIKE MX, không phải MIMIC.
Adam

@adam không, tiền thưởng mà tôi đặt cho câu hỏi đã kích hoạt câu trả lời này được hỏi cụ thể để bắt chước chức năng của trình phát MX.
nhaarman

0

Sử dụng xoay vòng gây ra một ngoại lệ, Vì vậy, tôi đã sửa hoạt động của mình bằng cách sử dụng:

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);
}

Bạn sẽ cần sử dụng gợi ý @ Lê Quang Duy.


0

Tôi đang làm việc trên một ứng dụng cần khóa máy tính bảng chỉ dành cho ứng dụng. Đầu tiên, tôi đặt ứng dụng của mình là MainLauncher, sau đó tôi khóa thanh tác vụ bằng AndroidView. Cuối cùng tôi chặn máy tính bảng. Đây không phải là một tính năng mà tôi chỉ định sử dụng trên nhiều kiểu máy tính bảng, vì mỗi kiểu thiết bị có một tính năng để chặn nó.

Nhưng nhìn chung nó hoạt động cho tất cả mọi người. Bạn có thể sử dụng các lệnh

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

làm ví dụ để tắt các nút. Nhưng mọi thứ đều dựa trên việc thay đổi các tệp hệ thống, bên trong thư mục "/ system / usr / keylayout / ...". LƯU Ý: Chỉ hoạt động trên các thiết bị đã root.

Một cách khác mà tôi đang thử mặc dù vẫn đang phát triển là sử dụng StreamWrite và StreamReader để truy cập RootDirectory và viết lại toàn bộ tệp để tắt và bật các nút.

Hi vọng điêu nay co ich.

Và bất kỳ câu hỏi vẫn có sẵn.


0

Đối với bất kỳ ai muốn xóa hoàn toàn soft-nav trên thiết bị Android đã root (hoặc ROM tùy chỉnh) , bạn có thể sửa đổi build.proptệp văn bản trong thư mục hệ thống.

Đặt biến / giá trị sau:

gemu.hw.mainkeys=1

Đây là những gì các nhà cung cấp sử dụng để vô hiệu hóa điều hướng mềm, khi họ có các nút vật lý.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.