android在创建新任务时在web视图上丢失上下文
我有两份申请。第一个具有web视图,其中包含指向另一个应用程序的链接和时间戳。 在这个web视图中,我有一个打开另一个应用程序B的链接。在B中,我有一个按钮。点击按钮会让我回到应用程序A, 不需要重新加载它,也不需要执行javascript代码来填充web视图中的其他字段。 因此,应用程序a应该被带回,时间戳不应该被更改,javascript被调用,字段被正确填充 问题是,如果我执行此方案,并且仅使用StartActivity()从A启动应用程序B,它将不起作用。我可以做A-B和B-A,但我的javascript没有被调用 因为调用A的目的不正确。换句话说,当从B调用A时,我应该在intent对象中找到将我带到A的操作和数据,但是intent中的操作为NULL 如果在另一方面,我在启动B上的活动时添加了一个标志:flag_Activity_NEW_TASK。它只工作一次。A->B->A但是在那之后我不能再给B打电话了。 我做的另一个测试是:如果我从主屏幕开始呼叫B,然后再呼叫A和B,它就可以工作了。所以,我想这与这样一个事实有关,即如果从A或主屏幕使用意图调用B,则B是不同的 无论如何,我无法让它同时打开应用程序、调用js和保持上下文 我只在模拟器上试过 这是应用程序A的清单android在创建新任务时在web视图上丢失上下文,android,android-intent,Android,Android Intent,我有两份申请。第一个具有web视图,其中包含指向另一个应用程序的链接和时间戳。 在这个web视图中,我有一个打开另一个应用程序B的链接。在B中,我有一个按钮。点击按钮会让我回到应用程序A, 不需要重新加载它,也不需要执行javascript代码来填充web视图中的其他字段。 因此,应用程序a应该被带回,时间戳不应该被更改,javascript被调用,字段被正确填充 问题是,如果我执行此方案,并且仅使用StartActivity()从A启动应用程序B,它将不起作用。我可以做A-B和B-A,但我的j
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.cgi.csb.launcher"
android:versionCode="1"
android:versionName="1.0">
<uses-sdk android:minSdkVersion="12"/>
<uses-permission android:name="android.permission.INTERNET"/>
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">
<activity android:name=".Activity1" launchMode="singleTask">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW"/>
<category android:name="android.intent.category.DEFAULT"/>
<data android:host="localhost" android:scheme="myactivity"></data>
</intent-filter>
</activity>
</application>
</manifest>
从B呼叫A:
case R.id.button:
Intent intent = new Intent();
intent.setData(Uri.parse("myactivity://localhost"));
intent.putExtra("firstKeyName","FirstKeyValue");
intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
break;
我用来区分何时从home调用A或何时从AppB调用javascript的代码
Intent intent = getIntent();
if ("myactivity://localhost".equals(intent.getDataString())) {
Log.d(TAG, "*** Call JS with action : " + intent.getAction());
_jsHandler.javaFnCall("Hardcoded params");
} else {
Log.d(TAG, "***Just call the app with action :" + intent.getAction());
}
非常感谢
case R.id.button:
Intent intent = new Intent();
intent.setData(Uri.parse("myactivity://localhost"));
intent.putExtra("firstKeyName","FirstKeyValue");
intent.addFlags(Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);
finish();
break;
Intent intent = getIntent();
if ("myactivity://localhost".equals(intent.getDataString())) {
Log.d(TAG, "*** Call JS with action : " + intent.getAction());
_jsHandler.javaFnCall("Hardcoded params");
} else {
Log.d(TAG, "***Just call the app with action :" + intent.getAction());
}