2015-11-06 3 views
0

Я хочу автоматически отключить домашние кнопки и кнопки питания после открытия приложения и включить их после нажатия кнопки выхода в приложении.отключить домашнюю кнопку в леденец программно

Я достиг этого, сделав свое приложение в качестве приложения для запуска, и оно работает до Jellybean (проверено до 4.1.2).

Но одно и то же приложение не работает в версиях KitKat и Lollipop. Я понял, что использовать технику киоска для отключения домашней кнопки в Lollipop. Обратитесь к https://sdgsystems.com/blog/implementing-kiosk-mode-android-part-3-android-lollipop, . Для этого требуется приложение владельца устройства и несколько шагов для его достижения.

Хотя мое приложение автоматически блокирует функцию кнопки «домой», оно не работает.

Мои вопросы:

  • Есть ли способ отключить кнопку домой в леденец?
  • Как достичь этого программно?

Если киоск является техникой, то как сделать его подходящим для моего требования? (Ищет руководство)

+0

Способ запуска приложения не работает? когда вы нажимаете кнопку «домой», андроид вызывает запуск пусковой установки, который не должен был меняться. – Nanoc

+0

уверены, что метод запуска запускается в леденец? – user2625151

+0

Вы уверены, что настроили приложение в качестве пусковой установки по умолчанию? – m0skit0

ответ

0

Вот поток, который я предлагаю. Создайте приложение владельца устройства и возьмите владение устройством через NFC или через adb. Добавьте имя своего пакета в setLockTaskPackage() в приложении владельца устройства.

Теперь в приложении, которое вы хотите заблокировать устройство, вызовите метод startLockTask(), и ваше устройство будет заблокировано для этого конкретного приложения, пока вы не вызове stopLockTask().

Информация о api here.

О том, как создать приложение и руководство для владельца устройства, можно найти на сайте Florent Dupont.

0

Первое извините за поздний ответ. Первое, что программист действительно не блокирует кнопку дома. Они используют только трюк, чтобы скрыть процесс кнопки дома за экраном блокировки.

Как вы можете это сделать? просто. Просто используйте окно блокировки экрана в качестве экрана оконного менеджера, поэтому после нажатия на дом экран вашего мобильного телефона не будет сведен к минимуму. Это небольшой трюк, используемый в большинстве приложений блокировки успеха.

и еще одна вещь состоит в том, как перекрывать верхнюю строку состояния системы телефона.

Для этого вы можете использовать код так же, как этот, и можете изменять его по своему усмотрению.

manager = ((WindowManager) getApplicationContext().getSystemService(Context.WINDOW_SERVICE)); 

localLayoutParams = new WindowManager.LayoutParams(); 
localLayoutParams.type = WindowManager.LayoutParams.TYPE_SYSTEM_ERROR; 
localLayoutParams.gravity = Gravity.TOP;  

localLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE| 

//WindowManager.LayoutParams.FLAG_LAYOUT_ATTACHED_IN_DECOR | 
    WindowManager.LayoutParams.FLAG_FORCE_NOT_FULLSCREEN | 

     // this is to enable the notification to recieve touch events 
     //WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN | 
     WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH | 
     // Draws over status bar 
WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN; 


//localLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT; 
localLayoutParams.height = (int) (50 *  getResources().getDisplayMetrics().scaledDensity); 
localLayoutParams.format = PixelFormat.TRANSPARENT; 

view = new customViewGroup(this); 

manager.addView(view, localLayoutParams); 

и создать customeVIewGroup класс, как это ..

public class customViewGroup extends ViewGroup { 

    public customViewGroup(Context context) { 
     super(context); 
    } 

    @Override 
    protected void onLayout(boolean changed, int l, int t, int r, int b) { 
    } 

    @Override 
    public boolean onInterceptTouchEvent(MotionEvent ev) { 
     Log.v("customViewGroup", "**********Intercepted"); 
     return true; 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^