ICS (Android 4 이상) 이후에는 보안상의 이유로 홈 버튼의 우선 적용이 제거되어 응용 프로그램이 악성 코드로 판명 될 경우 사용자 이탈을 허용합니다. 특히 차단
<?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>
코드 - Overriding Home Button
코드 추출 - -
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 여기
4.0 아래 장치에서 홈 버튼을 차단하기위한 글입니다 티 그가 다시 버튼 -
@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);
}
당신이 홈 버튼을 차단 않은 방법
? 지난 번 확인한 안드로이드에서는 홈 버튼을 차단할 수 없습니다. 몇 가지 코드를 게시하십시오. –
이 기능을 사용하여 어린이 친화적 인 앱을 만들기 위해서는 낮은 수준 (nabi 태블릿에서 사용 된 것과 같은)을 지원하는 기기에 설치된 어린이 용 맞춤형 ROM이 필요하거나 루트가 있어야합니다 ROM에 대한 설정 파일을 수동으로 편집 할 수 있어야합니다. 응용 프로그램 자체와 탐색을 차단하는 응용 프로그램이 별도의 응용 프로그램이되어야한다고 생각합니다. –
좋아, 어떻게 홈 단추를 비활성화 했습니까? 정말 재미있을 것입니다. – icbytes