簡體   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