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


  • 绑定(bind)应用程序中的服务市场应用程序(AIDL)
  • 注册BroadcastReceiver ,并调用返回未决的Intent 的服务方法。
  • 启动PendingIntent (包含BillingActivity实例)。
  • 使用“ startActivityForResult()”启动PaymentActivity。
  • 做一些工作,终止(finish())。
  • 在ActivtyResult()的方法中的中使用
  • 发送广播并终止。
  • 获取广播信息


  • 问题 :

    我想使用以下组件创建任务:
  • Top1Activity(应用程序A)
  • BillingActivity(市场应用程序)
  • PaymentActivity(市场应用程序)


  • 我试图将 BillingActivity + PaymentActivity 更改为“launchMode”:



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



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

    我已经花了超过48个小时来解决它。多谢您的协助。
    如果需要,我可以发布代码。

    谢谢

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

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

    TOP2 Activity (背景):
    <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>
    

    我的Top1 Activity (前景):
    <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>
    

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

    AIDL服务返回挂起目的:
    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 ...

    不知道 ?
    谢谢

    最佳答案

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

    07-27 20:52