我不知道如何解决这个Android问题。简单来说,我两个应用之间的流程如下:
流程
1. 将“应用程序A”绑定到“市场应用程序”中的服务(AIDL)。 2. 注册BroadcastReceiver并调用一个服务方法,该方法返回一个pendingIntent。 3. 启动PendingIntent(包含BillingActivity实例)。 4. 使用“startActivityForResult()”启动PaymentActivity。 5. 做一些事情,然后结束(finish())。 6. 在onActivityResult()方法中,发送广播并终止。 7. 获取广播信息。
问题:
我想创建一个包括以下组件的任务:
- Top1Activity(应用程序A) - BillingActivity(市场应用程序) - PaymentActivity(市场应用程序)
我试图更改BillingActivity + PaymentActivity的“launchMode”:
singleInstance 其中两者都会创建一个新的任务。当按返回按钮(或调用finish()方法)时,用户会按预期被重定向到上一个活动。问题:StartActivityForResult不能在多个任务之间使用(onActivityResult立即被调用)。
SingleTask
当按返回按钮(或调用finish()方法)时,在BillingActivity中,用户被重定向到Top2Activity(它是在后台任务中的)。我已经浪费了超过48个小时来解决它。如果需要,我可以发布代码。
谢谢
从BillingActivity(或PaymentActivity)按返回按钮时,我仍然被重定向到Top2Activity...没有头绪吗?谢谢。
流程
1. 将“应用程序A”绑定到“市场应用程序”中的服务(AIDL)。 2. 注册BroadcastReceiver并调用一个服务方法,该方法返回一个pendingIntent。 3. 启动PendingIntent(包含BillingActivity实例)。 4. 使用“startActivityForResult()”启动PaymentActivity。 5. 做一些事情,然后结束(finish())。 6. 在onActivityResult()方法中,发送广播并终止。 7. 获取广播信息。
问题:
我想创建一个包括以下组件的任务:
- Top1Activity(应用程序A) - BillingActivity(市场应用程序) - PaymentActivity(市场应用程序)
我试图更改BillingActivity + PaymentActivity的“launchMode”:
singleInstance 其中两者都会创建一个新的任务。当按返回按钮(或调用finish()方法)时,用户会按预期被重定向到上一个活动。问题:StartActivityForResult不能在多个任务之间使用(onActivityResult立即被调用)。
SingleTask
当按返回按钮(或调用finish()方法)时,在BillingActivity中,用户被重定向到Top2Activity(它是在后台任务中的)。我已经浪费了超过48个小时来解决它。如果需要,我可以发布代码。
谢谢
<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...没有头绪吗?谢谢。
Top2Activity
是什么,并发布该活动的清单文件。并指出它如何进入任务栈。听起来你的问题可能与taskAffinity
有关。 - David Wasser