我有一个应用程序在intent-filters
文件中使用AndroidManifest.xml
在按下主页按钮时启动Activity
。事情是,如果我的应用程序在不同的活动中,那么LoginActivity
将再次启动,用户必须再次登录。如果我的应用程序位于最顶层,我希望主页按钮不执行任何操作。
我怎么能这样做?
<activity
android:name="com.example.LoginActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.HOME" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
答案 0 :(得分:0)
不建议更改“主页”按钮功能,因为这样做会带来负面的用户体验。相反,如果用户登录,您可以将变量存储为变量,如果为true,则直接跳转到主要活动。
我不知道您的启动活动是什么,但如果是登录活动,您可以查看onStart方法我所说的内容,然后启动其他活动。
答案 1 :(得分:0)
您应该通过自己的触发器(静态变量?)来检查您的应用正在运行并且用户提前登录,然后启动另一项活动并完成当前
或
试试这个
android:launchMode="singleTop"
在你的活动清单中。
答案 2 :(得分:0)
有三种方法可以做到这一点:
在2.3和4.0之间工作:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_HOME)) {
// do nothing
return true;
}
return super.onKeyDown(keyCode, event);
}
也适用于2.3和4.0之间:
@Override public void onAttachedToWindow() {
this.getWindow().setType(WindowManager.LayoutParams.TYPE_KEYGUARD);
super.onAttachedToWindow();
}
这涉及覆盖方法onUserLeaveHint()
:
@Override
protected void onUserLeaveHint() {
Intent intent = getIntent();
intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
((AlarmManager) this.getSystemService(ALARM)).set(1,
System.currentTimeMillis(),
PendingIntent.getActivity(this, 0, intent, 0));
}
super.onUserLeaveHint();
}