2014-10-22 3 views
0

С ниже кодом, я могу открывать приложения, такие как: Google Maps, калькулятор и сохраняют свое состояние, когда они переходят на передний план:Запуск приложения из другого приложения на Android, поддерживая состояние

Intent i; 
      PackageManager manager = getPackageManager(); 
      try { 
       i = manager.getLaunchIntentForPackage("com.google.android.apps.maps"); 

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

       i.setAction("android.intent.action.VIEW"); 

       startActivity(i); 

      } catch (PackageManager.NameNotFoundException e) { 

      } 

Моей проблемы это приложение, созданное мной, потому что мое приложение не поддерживает состояние. Она всегда перезапускается.

Я попытался использовать свойства в манифесте: launchMode, alwaysRetainTaskState, всегда безуспешно.

Спасибо заранее

ответ

1

андроид деятельность имеет различные этапы, как приостанавливать и возобновлять, который вызывается, когда деятельность приостановлена. Если действия переднего плана остановлены, приложение может даже отображаться в состоянии паузы. В таких случаях вам нужно переопределить методы onPause(), чтобы сказать вашей активности, что делать, если она приостановлена.

Добавьте логику, которую необходимо выполнить, когда ваша активность приостановлена ​​в методе onPause().

@Override 
public void onPause() { 
    super.onPause(); // Always call the superclass method first 

    do some task here... 
    if (connectServer) { 
    pauseDownloadData(); 
    } 
} 

при возобновлении вашей деятельности, это будет вызывать onResume()

public void onResume() { 
    super.onResume(); // Always call the superclass method first 
    do some task here... 
    if (connectServer) { 
     resumeDownloadData(); // Local method to handle camera init 
    } 
} 
+0

Благодарим за помощь. Я понял, но мне нужно что-то настроить, чтобы приложение поддерживало состояние? –

+0

Если я скрою приложение Google Maps и перейду на передний план, он отобразит последнее действие перед тем, как войти в фоновый режим. –

+0

В моем приложении метод onDestoy всегда вызывается, когда я пытаюсь возобновить (при выполнении кода в первом комментарии) –

0

Проблема решена, с ниже раствором. Теперь я могу начать свое приложение, если оно закрыто или возобновлено (возобновляется в любой деятельности).

Код, который запускает приложение является (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) 
    { 
    } 

Мое приложение, которое начинается, имеет следующий манифест:

<?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> 

Теперь приложение возобновляют к какой-либо деятельности, не всегда перейдите к корневой активности.

Смежные вопросы