Sai*_*ira 5 user-interface android dialog button back
如果用户反复按下后退按钮,我需要一种方法来检测他们在我的任务/应用程序的最后一个活动上的时间并显示"你想要退出吗?" 对话框,他们返回主屏幕或他们运行的任何以前的应用程序.
它很容易挂钩onkeypressed(),但我怎么知道这是任务中的"最后"活动?
我想你可以在你的Activity中使用这样的smth来检查它是否是最后一个:
private boolean isLastActivity() {
final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> tasksInfo = am.getRunningTasks(1024);
final String ourAppPackageName = getPackageName();
RunningTaskInfo taskInfo;
final int size = tasksInfo.size();
for (int i = 0; i < size; i++) {
taskInfo = tasksInfo.get(i);
if (ourAppPackageName.equals(taskInfo.baseActivity.getPackageName())) {
return taskInfo.numActivities == 1;
}
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这还需要为AndroidManifest.xml添加权限:
<uses-permission android:name="android.permission.GET_TASKS" />
Run Code Online (Sandbox Code Playgroud)
因此,在您的Activty中,您可以使用以下内容:
public void onBackPressed() {
if (isLastActivity()) {
showDialog(DIALOG_EXIT_CONFIRMATION_ID);
} else {
super.onBackPressed(); // this will actually finish the Activity
}
}
Run Code Online (Sandbox Code Playgroud)
然后在你的Dialog处理按钮单击以调用Activity.finish().
| 归档时间: |
|
| 查看次数: |
3552 次 |
| 最近记录: |