Android:使用多个应用程序的活动创建单个任务(Lauchmode问题)

时间:2015-01-30 05:33:25

标签: android android-intent android-pendingintent aidl launchmode

我不知道如何处理这个Android问题。简而言之,我的两个应用程序之间的流程如下:

流量

  1. 应用程序A 绑定到市场应用程序(AIDL)中的服务
  2. 注册BroadcastReceiver 并调用返回pendingIntent 的服务方法。
  3. 启动PendingIntent (包含BillingActivity实例)。
  4. 使用“ startActivityForResult()”启动PaymentActivity。
  5. 做一些事情,终止(完成())。
  6. onActivitiyResult()方法中,发送广播并终止。
  7. 获取广播信息
  8. Flow between my 2 applications

    问题:

    我想使用以下组件创建任务

    • Top1Activity(申请A)
    • BillingActivity(市场应用)
    • PaymentActivity(市场应用)

    foreground and background tasks for Android

    我尝试更改 BillingActivity + PaymentActivity “launchMode”:

      

    singleInstance

    为这两者创建一个新任务。按下返回按钮(或调用finish()方法)时,用户将按预期重定向到上一个活动。问题:“StartActivityForResult”不能在多个任务之间使用(立即调用onActivityResult)。

      

    SingleTask

    在BillingActivity中按返回按钮(或调用finish()方法)时,用户被重定向到Top2Activity (在后台任务中)。

    我试图解决它已经失去了超过48小时。我很感激你的帮助。 如果需要,我可以发布代码。

    谢谢

    -----------编辑2015-02-02

    根据David的建议,我删除了所有特殊启动模式:

    TOP2Activity(背景):

    <activity
        android:name=".activities.MainActivity"
        android:configChanges="orientation|keyboardHidden"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateAlwaysHidden|adjustPan" >
        <meta-data
            android:name="android.app.searchable"
            android:resource="@xml/searchable" />
    
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
    
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
    
            <data android:scheme="xxx" />
            <data android:host="xxx" />
        </intent-filter>
    </activity>
    

    我的Top1Activity(前景):

    <activity
        android:name="activities.MainActivity"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    

    BillingActivity(前景):

    <activity
        android:name=".activities.BillingActivity"
        android:configChanges="orientation|keyboardHidden"
        android:excludeFromRecents="true"
        android:label="@string/title_activity_billing"
    
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
        </intent-filter>
    </activity>
    

    PaymentActivity:

    <activity
        android:name=".activities.PaymentActivity"
        android:configChanges="orientation|keyboardHidden"
        android:label="@string/title_activity_payment"
        android:screenOrientation="portrait"
    
        android:windowSoftInputMode="stateHidden" >
    </activity>
    

    AIDL服务返回pendingIntent:

    Intent intent = new Intent();
    intent.setClass(InBillingService.this, jp.xxx.activities.BillingActivity.class);
    intent.putExtra(Consts.PENDING_INTENT_INFO, result);
    intent.putExtra(Consts.RESULT_KEY, nextSession);
    
    
    PendingIntent pendingIntent;                    
    pendingIntent = PendingIntent.getActivity(InBillingService.this, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
    
    bundle.putParcelable(Consts.PENDING_INTENT, pendingIntent);
    

    当从BillingActivity(或PaymentActivity)按下后退按钮时,我仍然被重定向到Top2Activity ......

    不知道? 谢谢

1 个答案:

答案 0 :(得分:2)

android:taskAffinity=""添加到<activity> defninitions for both BillingActivity and PaymentActivity`。