从另一个应用程序启动一个应用程序,随时恢复到根系活力 [英] Launch an application from another application, resumes always to root activity

查看:227
本文介绍了从另一个应用程序启动一个应用程序,随时恢复到根系活力的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了一个应用程序来启动其他与此code:

I created a application to launch other with this code:

Intent i;
    PackageManager manager = getPackageManager();
    try {
        i = manager.getLaunchIntentForPackage("com.example");

        i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

        if (i == null)
            throw new PackageManager.NameNotFoundException();

        startActivity(i);

    } catch (PackageManager.NameNotFoundException e) 
    {

这code正常工作(可以启动应用程序)对于Facebook,谷歌地图,由我(com。示例)。

This code works correctly (can start application) for Facebook, Google Maps, another application created by me (com.example).

我的测试aplication(com。示例)就可以恢复,但总是到根系活力。
此应用程序有两个活动。第一活动(主发射器),和一个第二活性。当我浏览到第二个活动(主 - >秒),并执行应用程序启动器(高于code),我的应用程序试运行前景,但始终显示的第一个活动,破坏第二个活动。

My test aplication (com.example) can resume, but always to root activity. This application has two activities. First activity (Main Launcher), and a second activity. When I navigate to second activity (Main -> second), and execute application Launcher (above code), my application test run to foreground, but always show the first activity and destroy the second activity.

测试应用程序(com。示例)清单:

The test application (com.example) manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main"
            android:launchMode="singleTask" 
            android:alwaysRetainTaskState="true">

           <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
        </activity>

        <activity android:name=".Screen2"
            android:label="@string/screen2Title"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout" 
            android:windowSoftInputMode="adjustResize">
        </activity>

    </application>

</manifest>

Facebook和谷歌地图恢复最后一个可见的活动(不发射活动)。
属性在上面的清单明确界定?

Facebook and Google Maps resume the last visible activity (not launcher activity). Properties are well defined in above manifest?

Facebook和谷歌地图的行为是标准的,或活动code等的结果?

The behavior of Facebook and Google Maps, is standard, or results of the code of activities, etc?

在此先感谢您的帮助。

推荐答案

问题解决了,下面的解决方案。
现在,我可以开始我的应用程序,如果它被关闭或恢复(恢复任何活动)。

Problem solved, with the solution below. Now I can start my application, if it is closed or resume (resume in any activity).

在code启动应用程序是(启动):

The code that starts the application is (Launcher):

Intent i;
    PackageManager manager = getPackageManager();
    try 
    {
        i.addFlags(0);
        i.setPackage(null);

        if (i == null)
            throw new PackageManager.NameNotFoundException();

        startActivity(i);

    } 
    catch (PackageManager.NameNotFoundException e) 
    {
    }

我的应用程序启动,具有以下明显的:

My application that starts, has the following manifest:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="14" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.VIBRATE" />
    <uses-permission android:name="android.permission.READ_CONTACTS" />
    <uses-permission android:name="android.permission.WRITE_CONTACTS" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS" />
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".Main" >

           <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
           </intent-filter>
        </activity>

        <activity android:name=".Screen2"
            android:label="@string/screen2Title"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout" 
            android:windowSoftInputMode="adjustResize" 
             android:launchMode="singleTask" >
           </activity>  
        <activity android:name=".Screen3"
            android:label="@string/screen3Title"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout" 
            android:windowSoftInputMode="adjustResize" 
             android:launchMode="singleTask"  >

        </activity>

    </application>

</manifest>

现在应用程序恢复到任何活动,而没有导航到根系活力。

Now the application is resumed to any activity, without ever navigate to the root activity.

这篇关于从另一个应用程序启动一个应用程序,随时恢复到根系活力的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆