@capgo/inappbrowser 0.0.5 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build.gradle +6 -0
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/InAppBrowserPlugin.java +24 -19
- package/android/src/main/java/ee/forgr/capacitor_inappbrowser/WebViewDialog.java +17 -3
- package/android/src/main/res/layout/activity_browser.xml +4 -4
- package/android/src/main/res/layout/bridge_layout_main.xml +2 -2
- package/android/src/main/res/layout/content_browser.xml +2 -2
- package/android/src/main/res/layout/tool_bar.xml +2 -2
- package/package.json +1 -1
package/android/build.gradle
CHANGED
|
@@ -55,4 +55,10 @@ dependencies {
|
|
|
55
55
|
testImplementation "junit:junit:$junitVersion"
|
|
56
56
|
androidTestImplementation "androidx.test.ext:junit:$androidxJunitVersion"
|
|
57
57
|
androidTestImplementation "androidx.test.espresso:espresso-core:$androidxEspressoCoreVersion"
|
|
58
|
+
implementation 'com.android.support:customtabs:28.0.0'
|
|
59
|
+
implementation 'com.android.support.constraint:constraint-layout:1.1.3'
|
|
60
|
+
implementation 'com.android.support:design:28.0.0'
|
|
61
|
+
implementation 'com.android.support:appcompat-v7:28.0.0'
|
|
62
|
+
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
|
|
63
|
+
implementation 'com.google.android.material:material:1.0.0'
|
|
58
64
|
}
|
|
@@ -4,24 +4,25 @@ import android.content.ComponentName;
|
|
|
4
4
|
import android.content.Intent;
|
|
5
5
|
import android.net.Uri;
|
|
6
6
|
import android.os.Bundle;
|
|
7
|
-
import android.support.customtabs.CustomTabsCallback;
|
|
8
|
-
import android.support.customtabs.CustomTabsClient;
|
|
9
|
-
import android.support.customtabs.CustomTabsIntent;
|
|
10
|
-
import android.support.customtabs.CustomTabsServiceConnection;
|
|
11
|
-
import android.support.customtabs.CustomTabsSession;
|
|
12
7
|
import android.text.TextUtils;
|
|
13
8
|
import android.util.Log;
|
|
14
9
|
|
|
10
|
+
import androidx.browser.customtabs.CustomTabsCallback;
|
|
11
|
+
import androidx.browser.customtabs.CustomTabsClient;
|
|
12
|
+
import androidx.browser.customtabs.CustomTabsIntent;
|
|
13
|
+
import androidx.browser.customtabs.CustomTabsServiceConnection;
|
|
14
|
+
import androidx.browser.customtabs.CustomTabsSession;
|
|
15
|
+
|
|
15
16
|
import com.getcapacitor.JSObject;
|
|
16
|
-
import com.getcapacitor.NativePlugin;
|
|
17
17
|
import com.getcapacitor.Plugin;
|
|
18
18
|
import com.getcapacitor.PluginCall;
|
|
19
19
|
import com.getcapacitor.PluginMethod;
|
|
20
|
+
import com.getcapacitor.annotation.CapacitorPlugin;
|
|
20
21
|
|
|
21
22
|
import java.util.Iterator;
|
|
22
23
|
|
|
23
|
-
@
|
|
24
|
-
public class
|
|
24
|
+
@CapacitorPlugin(name = "InAppBrowser")
|
|
25
|
+
public class InAppBrowserPlugin extends Plugin {
|
|
25
26
|
public static final String CUSTOM_TAB_PACKAGE_NAME = "com.android.chrome"; // Change when in stable
|
|
26
27
|
private CustomTabsClient customTabsClient;
|
|
27
28
|
private CustomTabsSession currentSession;
|
|
@@ -41,31 +42,40 @@ public class CapBrowser extends Plugin {
|
|
|
41
42
|
|
|
42
43
|
@PluginMethod()
|
|
43
44
|
public void setUrl(PluginCall call) {
|
|
44
|
-
call.
|
|
45
|
+
String url = call.getString("url");
|
|
46
|
+
if(url == null || TextUtils.isEmpty(url)) {
|
|
47
|
+
call.reject("Invalid URL");
|
|
48
|
+
}
|
|
49
|
+
getActivity().runOnUiThread(new Runnable() {
|
|
50
|
+
@Override
|
|
51
|
+
public void run() {
|
|
52
|
+
webViewDialog.setUrl(url);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
call.resolve();
|
|
45
56
|
}
|
|
46
57
|
|
|
47
58
|
@PluginMethod()
|
|
48
59
|
public void open(PluginCall call) {
|
|
49
60
|
String url = call.getString("url");
|
|
50
61
|
if(url == null || TextUtils.isEmpty(url)) {
|
|
51
|
-
call.
|
|
62
|
+
call.reject("Invalid URL");
|
|
52
63
|
}
|
|
53
64
|
CustomTabsIntent.Builder builder = new CustomTabsIntent.Builder(getCustomTabsSession());
|
|
54
|
-
builder.addDefaultShareMenuItem();
|
|
55
65
|
CustomTabsIntent tabsIntent = builder.build();
|
|
56
66
|
tabsIntent.intent.putExtra(Intent.EXTRA_REFERRER,
|
|
57
67
|
Uri.parse(Intent.URI_ANDROID_APP_SCHEME + "//" + getContext().getPackageName()));
|
|
58
68
|
tabsIntent.intent.putExtra(android.provider.Browser.EXTRA_HEADERS, this.getHeaders(call));
|
|
59
69
|
tabsIntent.launchUrl(getContext(), Uri.parse(url));
|
|
60
70
|
|
|
61
|
-
call.
|
|
71
|
+
call.resolve();
|
|
62
72
|
}
|
|
63
73
|
|
|
64
74
|
@PluginMethod()
|
|
65
75
|
public void openWebView(PluginCall call) {
|
|
66
76
|
String url = call.getString("url");
|
|
67
77
|
if(url == null || TextUtils.isEmpty(url)) {
|
|
68
|
-
call.
|
|
78
|
+
call.reject("Invalid URL");
|
|
69
79
|
}
|
|
70
80
|
final Options options = new Options();
|
|
71
81
|
options.setUrl(url);
|
|
@@ -111,7 +121,7 @@ public class CapBrowser extends Plugin {
|
|
|
111
121
|
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
|
|
112
122
|
getContext().startActivity(intent);
|
|
113
123
|
}
|
|
114
|
-
call.
|
|
124
|
+
call.resolve();
|
|
115
125
|
}
|
|
116
126
|
|
|
117
127
|
private Bundle getHeaders(PluginCall pluginCall) {
|
|
@@ -157,9 +167,4 @@ public class CapBrowser extends Plugin {
|
|
|
157
167
|
}
|
|
158
168
|
return currentSession;
|
|
159
169
|
}
|
|
160
|
-
|
|
161
|
-
@Override
|
|
162
|
-
protected void handleOnActivityResult(int requestCode, int resultCode, Intent data) {
|
|
163
|
-
super.handleOnActivityResult(requestCode, resultCode, data);
|
|
164
|
-
}
|
|
165
170
|
}
|
|
@@ -3,7 +3,6 @@ package ee.forgr.capacitor_inappbrowser;
|
|
|
3
3
|
import android.app.Dialog;
|
|
4
4
|
import android.content.Context;
|
|
5
5
|
import android.graphics.Bitmap;
|
|
6
|
-
import android.support.v7.widget.Toolbar;
|
|
7
6
|
import android.text.TextUtils;
|
|
8
7
|
import android.view.View;
|
|
9
8
|
import android.view.Window;
|
|
@@ -14,8 +13,7 @@ import android.webkit.WebView;
|
|
|
14
13
|
import android.webkit.WebViewClient;
|
|
15
14
|
import android.widget.ImageButton;
|
|
16
15
|
import android.widget.TextView;
|
|
17
|
-
|
|
18
|
-
import com.cap.browser.plugin.capbrowser.R;
|
|
16
|
+
import androidx.appcompat.widget.Toolbar;
|
|
19
17
|
|
|
20
18
|
import java.net.URI;
|
|
21
19
|
import java.net.URISyntaxException;
|
|
@@ -78,6 +76,22 @@ public class WebViewDialog extends Dialog {
|
|
|
78
76
|
}
|
|
79
77
|
}
|
|
80
78
|
|
|
79
|
+
public void setUrl(String url) {
|
|
80
|
+
Map<String, String> requestHeaders = new HashMap<>();
|
|
81
|
+
if(_options.getHeaders() != null) {
|
|
82
|
+
Iterator<String> keys = _options.getHeaders().keys();
|
|
83
|
+
while(keys.hasNext()) {
|
|
84
|
+
String key = keys.next();
|
|
85
|
+
if(TextUtils.equals(key, "User-Agent")) {
|
|
86
|
+
_webView.getSettings().setUserAgentString(_options.getHeaders().getString(key));
|
|
87
|
+
} else {
|
|
88
|
+
requestHeaders.put(key, _options.getHeaders().getString(key));
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
_webView.loadUrl(url, requestHeaders);
|
|
93
|
+
}
|
|
94
|
+
|
|
81
95
|
private void setTitle(String newTitleText) {
|
|
82
96
|
TextView textView = (TextView) _toolbar.findViewById(R.id.titleText);
|
|
83
97
|
textView.setText(newTitleText);
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<
|
|
2
|
+
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
3
3
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
4
4
|
xmlns:tools="http://schemas.android.com/tools"
|
|
5
5
|
android:layout_width="match_parent"
|
|
6
6
|
android:layout_height="match_parent"
|
|
7
7
|
tools:context="com.cap.browser.plugin.WebViewActivity">
|
|
8
8
|
|
|
9
|
-
<android.
|
|
9
|
+
<com.google.android.material.appbar.AppBarLayout
|
|
10
10
|
android:layout_width="match_parent"
|
|
11
11
|
android:layout_height="wrap_content"
|
|
12
12
|
android:theme="@style/AppTheme.AppBarOverlay">
|
|
@@ -15,8 +15,8 @@
|
|
|
15
15
|
android:id="@+id/tool_bar"
|
|
16
16
|
layout="@layout/tool_bar" />
|
|
17
17
|
|
|
18
|
-
</android.
|
|
18
|
+
</com.google.android.material.appbar.AppBarLayout>
|
|
19
19
|
|
|
20
20
|
<include layout="@layout/content_browser" />
|
|
21
21
|
|
|
22
|
-
</
|
|
22
|
+
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<
|
|
2
|
+
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
3
3
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
4
4
|
xmlns:tools="http://schemas.android.com/tools"
|
|
5
5
|
android:layout_width="match_parent"
|
|
@@ -12,4 +12,4 @@
|
|
|
12
12
|
android:layout_width="fill_parent"
|
|
13
13
|
android:layout_height="fill_parent" />
|
|
14
14
|
|
|
15
|
-
</
|
|
15
|
+
</androidx.coordinatorlayout.widget.CoordinatorLayout>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<
|
|
2
|
+
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
3
3
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
4
4
|
xmlns:tools="http://schemas.android.com/tools"
|
|
5
5
|
android:layout_width="match_parent"
|
|
@@ -13,4 +13,4 @@
|
|
|
13
13
|
android:layout_width="match_parent"
|
|
14
14
|
android:layout_height="match_parent"/>
|
|
15
15
|
|
|
16
|
-
</
|
|
16
|
+
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<
|
|
2
|
+
<androidx.appcompat.widget.Toolbar xmlns:android="http://schemas.android.com/apk/res/android"
|
|
3
3
|
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
4
4
|
android:layout_width="match_parent"
|
|
5
5
|
android:layout_height="wrap_content"
|
|
@@ -47,4 +47,4 @@
|
|
|
47
47
|
android:contentDescription="@string/back_button"
|
|
48
48
|
android:paddingRight="10dp"
|
|
49
49
|
android:src="@drawable/arrow_back_disabled" />
|
|
50
|
-
</
|
|
50
|
+
</androidx.appcompat.widget.Toolbar>
|