2014-09-15 4 views
1

Я создаю приложение, которое будет использоваться детьми, и поэтому клиент хочет, чтобы я отключил любой способ выйти из него. Мне удалось заблокировать кнопку «домой», а также кнопку «Назад», но как насчет кнопки приложений других? Я могу скрыть все кнопки вниз, но их можно показать, прокручивая сверху вниз.Можно ли отключить кнопку «другие приложения» в Android?

Так можно ли отключить кнопку «другие приложения» в Android или как-то переопределить ее действие?

+2

как вы заблокировать кнопку домой? В андроиде запрещается блокировать домашнюю кнопку в последний раз, когда я проверил. Поместите некоторый код. –

+1

Я думаю, что для создания дружественного к ребенку приложения с этой функциональностью вам понадобится либо пользовательский ром для детей, установленный на устройстве, который будет поддерживать это на низком уровне (например, тот, который используется в планшетах nabi), либо иметь root и иметь возможность редактировать файлы конфигурации для рома вручную. Я чувствую, что приложение и приложение, которое блокирует навигацию, должны быть отдельными приложениями. –

+0

Правильно, как вы отключили кнопку «домой»? Будет интересно узнать, действительно. – icbytes

ответ

0

Опубликовать ICS, т. Е. Android 4+, переопределение HomeButton было удалено из соображений безопасности, чтобы позволить пользователю выйти в случае, если приложение окажется вредоносным ПО.


Вот статья для блокировки кнопки домой на устройствах ниже 4,0 - Overriding Home Button

Код Extract -

public class DisableHardButton extends Activity { 
    TextView mTextView; 
    ToggleButton mToggleButton; 
    boolean isLock=false; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    mTextView=(TextView) findViewById(R.id.tvInfo); 
    mToggleButton=(ToggleButton) findViewById(R.id.btnLock); 

mToggleButton.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

    @Override 
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
     isLock=isChecked; 
     onAttachedToWindow(); 
    } 
}); 
} 

@Override 
public boolean dispatchKeyEvent(KeyEvent event) { 

    if ((event.getKeyCode() == KeyEvent.KEYCODE_HOME) && isLock) { 
     mTextView.setText("KEYCODE_HOME"); 
     return true; 

    } else { 
     return super.dispatchKeyEvent(event); 
    } 

} 

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 

    if((keyCode==KeyEvent.KEYCODE_BACK) && isLock) { 
     mTextView.setText("KEYCODE_BACK"); 
     return true; 
    } else { 
     return super.onKeyDown(keyCode, event); 
    } 
} 

@Override 
public void onAttachedToWindow() { 
    System.out.println("Onactivity attached :"+isLock); 

if(isLock) { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);  
    super.onAttachedToWindow(); 

} else { 
    this.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION);  
    super.onAttachedToWindow(); 
} 
} 
} 

XML -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

    <TextView 
     android:id="@+id/tvInfo" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Hi! This is the testing of override home button" /> 

    <ToggleButton 
     android:id="@+id/btnLock" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textOff="UnLocked" 
     android:textOn="Locked" /> 

</LinearLayout> 

кодекс специально для блокирования T он снова кнопку -

@Override 
public void onBackPressed() { 
    //Do nothing 
} 

и старше API 5 используют это:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if (keyCode == KeyEvent.KEYCODE_BACK) { 
     //Do nothing 
     return true; 
    } 

    return super.onKeyDown(keyCode, event); 
}