興味深い問題が残っています:Theme.NoDisplay
(UIなし)のランチャータイプのアクティビティがあり、いくつかの条件によって異なるアクティビティを起動する必要があります。 startActivity()
を呼び出すと、アプリがランチャーアイコン(起動してLauncherActivity
を起動しますが、エラー/例外なしで終了した場合)で起動された場合は起動しません。ランチャータイプのアクティビティから別のアクティビティを開始できません
もつとも
私はADB経由LauncherActivity
を開始するか、それだけで正常に動作するようですstartActivity()
に遅延を追加しています。
ここにコードスニペットがあります。
public class LauncherActivity extends Activity {
private Handler handler = new Handler();
private SharedPreferences preferences;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
preferences = getSharedPreferences(App.getContext().getString(R.string.preferences_name), MODE_PRIVATE);
int pesel = preferences.getInt(App.getContext().getString(R.string.pref_pesel), 0);
String password = preferences.getString(App.getContext().getString(R.string.pref_password), "");
Intent intent;
if (pesel != 0 && !password.isEmpty()) {
// TODO: server-side password check
intent = new Intent(this, MainActivity.class);
} else {
intent = new Intent(this, RegisterActivity.class);
}
Intent startIntent = getIntent();
intent.setAction(startIntent.getAction());
intent.setFlags(startIntent.getFlags());
if (startIntent.getExtras() != null)
intent.putExtras(startIntent.getExtras());
final Intent readyIntent = intent;
/*
THIS DOENS"T WORK (WORKS IF STARTED VIA ADB THOUGH)
*/
startActivity(readyIntent);
/*
THIS HOWEVER DOES WORK (ALWAYS)
*/
handler.postDelayed(new Runnable() {
@Override
public void run() {
startActivity(readyIntent);
}
}, 5000);
finish();
}
}
マニフェストを教えてください。 – t0mm13b