Backキーが押されると、Activityが終了してしまう。誤操作を防止したいので・・・・
Backキーを禁止するには、
//BACKキー禁止
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction()==KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
return true; //trueでActivityを終了しない
}
}
return super.dispatchKeyEvent(event);
}
終了していいか確認する
//BACKキーで終了確認
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if (event.getAction()==KeyEvent.ACTION_DOWN) {
switch (event.getKeyCode()) {
case KeyEvent.KEYCODE_BACK:
// 終了していいか、ダイアログで確認
showDialog(WBsetActivity.this,"終了","終了してもよろしいですか");
return true;
}
}
return super.dispatchKeyEvent(event);
}
//ダイアログ
private void showDialog(Context context,String title,String text) {
AlertDialog ad=new AlertDialog.Builder(this)
.setTitle(title)
.setMessage(text)
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
finish(); //終了
}
})
.setNegativeButton("キャンセル", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
}
})
.show();
}
HOMEキーが押されたとき
HOMEキーが押されたことはキャッチできるが、HOME画面に戻るのは阻止できない。
Activityが中断されたまま残るのが困るときはどうする?
強制的にActivityを終了させるしかない。
@Override
public void onCreate(Bundle savedInstanceState) {
//HOMEキーが押されたときのレシーバ設定
HomeButtonReceive m_HomeButtonReceive = new HomeButtonReceive();
IntentFilter iFilter = new IntentFilter();
iFilter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
this.registerReceiver(m_HomeButtonReceive, iFilter);
}
//HOMEボタンで終了する。
public class HomeButtonReceive extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1){
Toast.makeText(getApplicationContext(), "終了" ,Toast.LENGTH_SHORT).show();
finish();
}
}
0 件のコメント:
コメントを投稿