Android:onActivityResult Intent 在通过浏览器链接启动活动时为空



我想为我的Cordova/Ionic Android应用程序实现一个插件。 我在插件中有这两个主要文件:

1. MyPlugin.java将通过Ionic(Ionic 3,Angular 5(应用程序调用。

2. 浏览器链接活动.java负责启动浏览器并从浏览器中取回数据。

我的插件.java :

该插件将使用以下代码行启动BrowserLinkActivity

Intent intent = new Intent(context, BrowserLinkActivity.class);
cordova.startActivityForResult((CordovaPlugin) this, intent, REQUEST_CODE);

因此,onActivityResult在插件中被覆盖:

@Override
public void onActivityResult( int requestCode, int resultCode, Intent data) {
// The data parameter is always null
}

这是活动。浏览器意图将在BrowserLinkActivity活动onCreate中启动。

浏览器链接活动.java :

public class BrowserLinkActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Uri data = getIntent().getData();
if (data == null){
Intent browserIntent = new Intent(Intent.ACTION_VIEW, "The website URL");
browserIntent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | 
Intent.FLAG_ACTIVITY_NO_HISTORY | 
Intent.FLAG_FROM_BACKGROUND | 
Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(browserIntent);
}
else { // Activity has started through the browser-link
Intent returnIntent = new Intent();             
returnIntent.putExtra("Key","Something");
setResult(Activity.RESULT_OK, returnIntent);
finish();
}
}

我已经定义了如下所示的plugin.xml文件:

<config-file target="AndroidManifest.xml" parent="/manifest/application">
<activity android:name="cordova.plugin.mycustomplugin.BrowserLinkActivity"
android:launchMode="singleTask" android:noHistory="true">
<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="http" android:host="MyHost.COM" />
</intent-filter>
</activity>
</config-file>

但是,问题在于,当从浏览器链接调用活动时,setResult 方法不起作用,并且onActivityResult中的Intent参数始终NULL(并且请求代码也RESULT_CANCELED(。

如何防止browser-link启动/创建新的BrowserLinkActivity活动实例?(我认为这是导致setResult无法正常工作的主要原因(。

注意:我已经在browserIntent中添加了Intent.FLAG_ACTIVITY_SINGLE_TOPIntent.FLAG_ACTIVITY_CLEAR_TOP,并为plugin.xml中的BrowserLinkActivity添加了android:launchMode="singleTask",但仍然不起作用。

任何帮助,不胜感激。

我之前建议将launchMode设置为SingleTaskBrowserLinkActivity

然而,后来问题的作者发现,从plugin.xml中删除android:noHistory="true"BrowserLinkActivity并使用这两个意图标志(即FLAG_ACTIVITY_SINGLE_TOP | FLAG_ACTIVITY_CLEAR_TOP(在这种情况下起作用,结果完美地倒退了。

希望将来对其他开发人员有所帮助。

最新更新