初めて起動すると、ユーザーがログインするための登録アクティビティが実行されます(またはユーザーがまだログインしていない場合)。登録アクティビティでは、戻るボタンは何もしません。これが私のコードです:
マニフェスト.xml:
<activity
android:name="com.ddv.android.gcm.support.app.MainActivity"
android:label="@string/title_activity_main"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="com.ddv.android.gcm.support.app.RegisterActivity"
android:screenOrientation="portrait" >
</activity>
MainActivity.java (Register アクティビティの呼び出し):
protected void launchRegistrationIntent() {
Intent intent = new Intent(getBaseContext(), RegisterActivity.class);
startActivityForResult(intent, GET_USERNAME);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
Log.d(TAG, "OnActivityResult");
if (data != null) {
final String username = data.getStringExtra("USERNAME");
...
}
}
RegisterActivity.java:
@Override
public void onBackPressed() {
Log.d(TAG, "Back button pressed");
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Log.d(TAG, "Back button pressed (old)");
Intent startMain = new Intent(Intent.ACTION_MAIN);
startMain.addCategory(Intent.CATEGORY_HOME);
startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(startMain);
}
return true;
}
アプリは Android 4.0 以降で実行されているため、オーバーライドは必要ないと思いonKeyDown()
ますが、試してみるためだけに入れました。ご覧のとおり、戻るボタンでユーザーをホーム画面に戻そうとしています (メイン アクティビティに戻っても、ユーザーはまだログインしていないため、登録アクティビティに戻るだけです)。
しかし、Register Activity 内の [戻る] ボタンを押しても、ログもログも何も起こりません。これが で呼び出されているアクティビティと関係があるかどうかはわかりませんstartActivityForResult()
。しかしonActivityResult()
、戻るボタンを押してもコールバックされません。