我想为我的Cordova/Ionic Android应用程序实现一个插件。
插件中有两个主要文件:
1。myplugin.java
这将通过离子(离子3,角5)应用来调用。
2。browserLinkActivity.java
负责启动浏览器并从浏览器中获取数据。
myplugin.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
}
这是活动。浏览器意图将从
浏览器链接活动
活动
onCreate
.
browserlinkactivity.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方法不起作用,并且
Intent
参数在
活动结果
总是
NULL
(请求代码是
RESULT_CANCELED
也一样。
我怎么能阻止
browser-link
从启动/创建
浏览器链接活动
活动?(我认为这是导致
setResult
工作不正常)。
注:
我已经加了
Intent.FLAG_ACTIVITY_SINGLE_TOP
和
Intent.FLAG_ACTIVITY_CLEAR_TOP
到
browserIntent
并添加
android:launchMode="singleTask"
对于
浏览器链接活动
在
插件
但还是不行。
如有任何帮助,我们将不胜感激。