У меня есть приложение Cordova, и я хотел бы поделиться файлом между двумя устройствами, используя Android Beam. Я бы хотел, чтобы принимающее устройство продолжало и не запускало новый Activity
, который перезапускает WebView
.
Однако после использования Android Beam намерение обрабатывается методом onNewIntent()
, а приложение cordova по-прежнему перезапускается и сбрасывает состояние приложения.
Я настроил свой Плагин Cordova для внедрения фильтра намерений в AndroidManifest
в MainActivity
приложения Cordova, например:
<application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true">
<activity android:configChanges="orientation|keyboardHidden|keyboard|screenSize|locale|smallestScreenSize|screenLayout|uiMode" android:label="@string/activity_name" android:launchMode="singleTask" android:name="MainActivity" android:theme="@android:style/Theme.DeviceDefault.NoActionBar" android:windowSoftInputMode="adjustResize">
<intent-filter android:label="@string/launcher_name">
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<!-- Injected by my plugin -->
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data android:host="*" android:mimeType="application/json" />
</intent-filter>
</activity>
</application>
Я пытался использовать разные Launchmodes для android. Только singleInstance
и singleTask
передадут намерение методу onNewIntent()
.
Я переопределяю CordovaPlugin
onNewIntent()
следующим образом:
@Override
public void onNewIntent(Intent intent) {
handleViewIntent(intent);
}
В handleViewIntent
я обрабатываю переданный файл и отправляю результат обратно в приложение cordova:
PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, jsonstr);
pluginResult.setKeepCallback(true);
this.callbackContext.sendPluginResult(pluginResult);
После запуска этого кода приложение cordova получит данные, однако WebView
перезагрузится. Государство потеряно. Я не понимаю, почему действие с WebView
уничтожается после того, как я обработал новое намерение. Что я могу сделать, чтобы изменить это поведение?