我正在尝试制作Android版本的相对简单的iOS应用程序,它使用webview,一些按钮然后依赖于对CMS的javascript调用.
但我很早就陷入了困境:webview无法使用javascript.我已经阅读了很多关于如何在Android webview中启用JS的帖子,但到目前为止还没有运气.
以下是我的一些代码:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mWebView = (WebView) findViewById(R.id.webview);
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.setWebChromeClient(new WebChromeClient());
mWebView.setWebViewClient(new HelloWebViewClient()
{
@Override
public void onPageFinished(WebView view, String url)
{
//Calling an init method that tells the website, we're ready
mWebView.loadUrl("javascript:m2Init()");
page1(mWebView);
}
});
mWebView.loadUrl("http://my_url/mobile/iphone//app.php");
}
private class HelloWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
view.loadUrl(url);
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack(); …Run Code Online (Sandbox Code Playgroud) 在android清单文件中,我为gps添加了以下权限以访问该位置
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
我正在使用位置管理器类来构建位置更新,如下所示
private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters
private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
locationManager.requestLocationUpdates(
LocationManager.GPS_PROVIDER,
MIN_TIME_BW_UPDATES,
MIN_DISTANCE_CHANGE_FOR_UPDATES,
this
);
Run Code Online (Sandbox Code Playgroud)
但上面的一行是一个例外陈述
"gps" location provider requires ACCESS_FINE_LOCATION permission
Run Code Online (Sandbox Code Playgroud)
这个东西只发生在targetSDKVersion 23(即用android 6.0),我也在android 5.1中测试过,工作正常.
请帮助!!.提前致谢.
尝试使用Necessitas的QWebView端口查看HTML5网页中的GPS坐标.但是它总是响应不支持.
function load( )
{
if ( navigator.geolocation )
{
alert( "Supported." );
}
else
{
alert( "Not Supported!" );
}
}
Run Code Online (Sandbox Code Playgroud)
我已经改变了QWebPage以允许权限:
BrowserWebPage::BrowserWebPage( QObject* parent ) : QWebPage( parent )
{
connect( this,
SIGNAL( featurePermissionRequested( QWebFrame*, QWebPage::Feature ) ),
SLOT( permissionRequested( QWebFrame*, QWebPage::Feature ) ) );
}
void BrowserWebPage::permissionRequested( QWebFrame* frame, QWebPage::Feature feature )
{
if ( feature == Geolocation )
{
setFeaturePermission( frame, feature, PermissionGrantedByUser );
}
else //denied
{
setFeaturePermission( frame, feature, PermissionDeniedByUser );
}
}
Run Code Online (Sandbox Code Playgroud)
并设置以下权限: …
我目前在webview中遇到地理定位问题.我有一个webapp.我目前没有使用phonegap或任何其他移动框架.我没有成功获得内置的html5地理位置javascript api,以便在Android应用程序的webview中运行的应用程序上运行.该网站工作正常,否则从Android 2.0+上的Chrome浏览器(支持地理位置).
我正在编译android api版本5.
我已经读过 这篇文章了
Phonegap编写包含内置调用并使用主机活动的代理的解决方案很好,但我更喜欢使用内置到webview(webkit)而不使用手机间隙.
我在清单文件中设置了适当的权限:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
这是一个示例代码段:
webview = (WebView) findViewById(R.id.webview);
pbarDialog = new ProgressDialog(this);
pbarDialog.setCancelable(false);
pbarDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
webview.setWebViewClient(new MyWebViewClient());
webview.getSettings().setJavaScriptEnabled(true);
webview.setWebChromeClient(new MyChromeWebViewClient());
webview.setVerticalScrollBarEnabled(false);
WebSettings webSettings = webview.getSettings();
webSettings.setSavePassword(true);
webSettings.setSaveFormData(true);
webSettings.setJavaScriptEnabled(true);
webSettings.setSupportZoom(false);
webSettings.setJavaScriptCanOpenWindowsAutomatically(true);
webSettings.setGeolocationEnabled(true);
Run Code Online (Sandbox Code Playgroud)
...
private class MyChromeWebViewClient extends WebChromeClient {
@Override
public void onProgressChanged(WebView view, int progress) {
// Activities and WebViews measure progress with different scales.
// …Run Code Online (Sandbox Code Playgroud) 我使用Xamarin WebView控制器来显示一个网站(在iOS/Android中).网站的主页提示访问设备位置.但是,当我在WebView(来自应用程序)上拥有此网站时,该提示未显示.当我在浏览器上打开此站点时,它会从同一个移动设备显示消息框.我只是想知道是否有可能在Xamarin WebView上有这样的提示?
这是一个示例提示.
这就是我在Xamarin应用程序中的全部内容.
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
xmlns:local="clr-namespace:nCollar"
x:Class="nCollar.MainPage">
<ContentPage.Padding>
<OnPlatform x:TypeArguments="Thickness">
<OnPlatform.iOS>0,20,0,0</OnPlatform.iOS>
<OnPlatform.Android>0,0,0,0</OnPlatform.Android>
<OnPlatform.WinPhone>0,0,0,0</OnPlatform.WinPhone>
</OnPlatform>
</ContentPage.Padding>
<WebView x:Name="webView"
Grid.Row="0"
VerticalOptions="FillAndExpand"
Source="https://www.ncollar.com.au/"/>
</ContentPage>
Run Code Online (Sandbox Code Playgroud)
更新1
Android的
我已经尝试过这篇文章中提到的解决方案,但它仍然没有显示提示.
WebViewRenderer.cs
using Android.Webkit;
using Xamarin.Forms.Platform.Android;
[assembly: Xamarin.Forms.ExportRenderer(typeof(TestApp.Controls.WebView), typeof(TestApp.Droid.Renderers.WebViewRenderer))]
namespace TestApp.Droid.Renderers
{
public class WebViewRenderer : Xamarin.Forms.Platform.Android.WebViewRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Xamarin.Forms.WebView> e)
{
base.OnElementChanged(e);
if (this.Control == null)
{
return;
}
var webView = this.Element as TestApp.Controls.WebView;
if (webView == null)
{
return;
}
// webView. ings.JavaScriptEnabled = true;
this.Control.Settings.DomStorageEnabled = …Run Code Online (Sandbox Code Playgroud) 我是android,java和javascript编码的新手.
我正在尝试获取当前的GPS坐标,然后在Android设备上跟踪它.我正在使用webview,大部分代码都是用javascript编写的.
我已经搜索了好几天并尝试了很多不同的方法,但我无法在Android设备上获得GPS坐标.请查看代码并了解为什么我没有获得GPS位置.
需要注意的一点是:1.我下载并检查了其他传感器应用程序,可以看到当前的GPS坐标显示(因此GPS正在设备上运行).2.当我运行我的代码时,我在通知区域看到GPS搜索图标,它一直闪烁但从不修复.3.当我在笔记本电脑浏览器上只运行带有javascript的HTML文件时,它会请求共享位置的权限,然后它会给出坐标,但是同一个文件在android中没有显示任何内容.
请看下面的代码并帮我解决这个问题.我已经尝试了很多,并将此作为我最后的希望发布.
清单文件具有以下权限 -
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_GPS" />
<uses-permission android:name="android.permission.ACCESS_ASSISTED_GPS" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
Android中的主要java代码有 -
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
webView = new WebView(this);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.getSettings().setUseWideViewPort(true);
webView.loadUrl("file:///android_asset/mymap.html");
setContentView(webView);
}
Run Code Online (Sandbox Code Playgroud)
使用javascript的HTML文件是 -
<!DOCTYPE html>
<html>
<body onunload="OnUnload()" onload="getLocation()">
<p id="demo">Your coordinates:</p>
<script>
var watchID;
var x=document.getElementById("demo");
function getLocation()
{
if (navigator.geolocation)
{
var options = {maximumAge:600000, timeout:100000, enableHighAccuracy: true};
watchID = navigator.geolocation.watchPosition(showPosition,showError,options);
}
else{x.innerHTML="Geolocation is not supported by this …Run Code Online (Sandbox Code Playgroud) 我有一个WebView,它打开一个需要访问用户位置的URL.它可以确定在应用程序外部使用Google Chrome时的位置,但在应用程序中,它表示我不允许应用程序使用位置.目前我已添加
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Run Code Online (Sandbox Code Playgroud)
在我的Manifest和我的班级里,我有:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.webViewActivity);
WebView webView = (WebView) findViewById(R.id.webView);
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true);
webView.setWebChromeClient(new WebChromeClient());
webSettings.setAllowUniversalAccessFromFileURLs(true);
webSettings.setDomStorageEnabled(true);
webSettings.setGeolocationEnabled(true)
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?谢谢您的帮助.
我想在 Android WebView 上的 PWA 中使用二维码扫描仪。
minSdkVersion 26 和 targetSdkVersion 28问题是权限似乎没有被授予。此外,权限请求会重复多次。
显现
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-feature
android:name="android.hardware.camera"
android:required="true" />
Run Code Online (Sandbox Code Playgroud)
根据上一个问题的答案,我在 WebViewHelper 类中有此代码
lateinit var webkitPermissionRequest : PermissionRequest
...
webView.webChromeClient = object : WebChromeClient() {
override fun onPermissionRequest(request: PermissionRequest) {
webkitPermissionRequest = request
val requestedResources = request.resources
for (r in requestedResources) {
if (r == …Run Code Online (Sandbox Code Playgroud) 我正在使用平板电脑,正在处理 html 应用程序,希望在不使用任何网络连接的情况下获取 GPS 位置。请建议我简单的方法。
我正在尝试在 xamarin 表单应用程序中启用 webview 以获取 android 设备的当前 GPS 坐标。当前,当在手机或笔记本电脑上的 chrome 浏览器中打开时,webview/网站将返回 GPS 坐标,但在应用程序中不会。试图让这个工作尽可能简单,并在之后扩展它。
到目前为止的代码:XAML 页面:
<?xml version="1.0" encoding="utf-8" ?>
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="UITrial.Page2"
BackgroundColor = "#f0f0ea">
<Label Text="{Binding MainText}" VerticalOptions="Center" HorizontalOptions="Center" />
<WebView Source="https://danu6.it.nuigalway.ie/OliverInternetProgramming/project/Loginproject.html" />
</ContentPage>
Run Code Online (Sandbox Code Playgroud)
HTML页面:
<!DOCTYPE html>
<html>
<body>
<p>Click the button to get your coordinates.</p>
<button onclick="getLocation()">Try It</button>
<p id="demo"></p>
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.watchPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";}
}
function showPosition(position) …Run Code Online (Sandbox Code Playgroud)