繁体   English   中英

Android:当所有程序发送到后台时,如何关闭从我的应用程序打开的应用程序

[英]Android: How to close application opened from my app when all sent to background

这是我的问题。 我正在开发从服务器加载一些文档的应用程序。 我通过Intent.ACTION_VIEW在另一个应用程序中打开文档。 这一切都很好。 问题是整个应用程序都受到密码保护,因此我必须捕获诸如“发送到后台”或“屏幕锁定”之类的事件,然后才能显示密码屏幕,而在我的上方打开另一个应用程序时,此功能不起作用。 因此,如果用户打开文档,然后按主页按钮,请从菜单中单击我的启动图标,然后他会再次获得带有打开文档的外部应用程序,并通过后退按钮再次访问我的应用程序。 这是需要修复的安全问题。 以下是一些代码段:


开启文件:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);

Uri uri = Uri.fromFile(downloadedFile);
String mimeType = document.getMimeType();
intent.setDataAndType(uri, mimeType);
startActivityForResult(intent, 1);

捕获发送到后台:

        ActivityManager am = (ActivityManager) context
            .getSystemService(Context.ACTIVITY_SERVICE);
    List<RunningTaskInfo> tasks = am.getRunningTasks(1);
    if (!tasks.isEmpty()) {
        ComponentName topActivity = tasks.get(0).topActivity;
        if (!topActivity.getPackageName().equals(context.getPackageName())) {
            IN_BACKGROUND = true;
            Log.i(PinUtil.class.getSimpleName(), "App sent to background ");
        } else {
            IN_BACKGROUND = false;
        }
    }

我的问题是:是否有可能在打开另一个应用程序时检测我的应用程序是否发送到后台? 按下我的启动器图标后如何不打开另一个应用程序。

感谢您的所有回复。 关于卢博斯

为了解决此问题:

因此,如果用户打开文档,然后按主页按钮,请从菜单中单击我的启动图标,然后他会再次获得带有打开文档的外部应用程序,并通过后退按钮再次访问我的应用程序。 这是需要修复的安全问题。 以下是一些代码段:

你需要确保的是,当你启动一个外部应用程序供用户查看文档时,外部应用程序不会在同一个任务,你的应用程序运行。 它需要在新的单独任务中运行。 您可以这样做:

Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // Ensure app runs in separate task
Uri uri = Uri.fromFile(downloadedFile);
String mimeType = document.getMimeType();
intent.setDataAndType(uri, mimeType);
startActivity(intent); // Can't use startActivityForResult() here

但是,启动外部查看器时不能使用startActivityForResult() ,因为在另一个任务中运行的活动无法将结果返回给您。 但是,大多数外部应用程序无论如何用ACTION_VIEW启动时都不会返回结果,因此这可能不是问题。

然后你问这个:

我的问题是:是否有可能在打开另一个应用程序时检测我的应用程序是否发送到后台? 按下我的启动器图标后如何不打开另一个应用程序。

在StackOverflow上应该有一些答案,可以帮助您确定应用程序是否在后台(确定它实际上并不那么容易)。

我上面的解释应该回答您的第二个问题。 如果您未在任务中启动其他应用程序,则在按下启动器图标时仅将启动您的应用程序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM