繁体   English   中英

Andorid App 没有自动识别位置

Andorid App is not fecthing the location automatically

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

I have converted a Website's page( https://taxif.com/online.html ) to an Android App by using WebView. 网站自动获取当前位置,但应用程序未获取当前位置

请让我知道如何自动获取 webview 中的当前位置,与网页中相同。

MainActivity.java文件


import androidx.appcompat.app.AppCompatActivity;
import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.widget.Toast;


public class MainActivity extends AppCompatActivity {
    private SwipeRefreshLayout refreshLayout;
    private WebView webView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = findViewById(R.id.myWebView);
        refreshLayout = findViewById(R.id.refresh);

        refreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                webView.reload();
            }
        });

        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);


        webView.setWebChromeClient(new MyChromeClient());
        webView.setWebViewClient(new BrowserClient(refreshLayout));

        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webSettings.setAllowFileAccess(true);
        webSettings.setAppCacheEnabled(true);

        webSettings.setRenderPriority(WebSettings.RenderPriority.HIGH);
        webSettings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
        webSettings.setAppCacheEnabled(true);
        webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
        webSettings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NARROW_COLUMNS);
        webSettings.setSavePassword(true);
        webSettings.setSaveFormData(true);
        webSettings.setEnableSmoothTransition(true);

        loadWebPage();

    }

    private void loadWebPage() {

        ConnectivityManager connectivityManager = (ConnectivityManager) MainActivity.this
                .getApplication().getSystemService(Context.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connectivityManager.getActiveNetworkInfo();

        if(networkInfo != null && networkInfo.isConnectedOrConnecting()){
            webView.loadUrl("https://taxif.com/online.html");
        }else{
            Toast.makeText(this,"You don't have any active internet connection",Toast.LENGTH_SHORT).show();
        }
    }
}

BrowserClient.java文件


import android.graphics.Bitmap;
import android.webkit.WebResourceError;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;

import androidx.swiperefreshlayout.widget.SwipeRefreshLayout;

public class BrowserClient extends WebViewClient {

    SwipeRefreshLayout refreshLayout;

    public BrowserClient(){

    }

    public BrowserClient(SwipeRefreshLayout refreshLayout) {
        this.refreshLayout = refreshLayout;
    }

    @Override
    public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
        super.onReceivedError(view, request, error);
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        super.onPageStarted(view, url, favicon);
        refreshLayout.setRefreshing(true);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        refreshLayout.setRefreshing(false);
    }
}

AndroidManifest.xml文件

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.booking">

    <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_NETWORK_STATE"/>


    <uses-feature android:name="android.hardware.type.watch" />

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/Theme.BookingApp">

        <!--
               Set to true if your app is Standalone, that is, it does not require the handheld
               app to run.
        -->
        <meta-data
            android:name="com.google.android.wearable.standalone"
            android:value="true" />

        <activity
            android:name=".SplashScreen"
            android:label="Booking App"><intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter></activity>
        <activity android:name=".MainActivity">

        </activity>
    </application>

</manifest>

提前致谢

1 个回复

在 android 中,您需要编写代码来获取用户位置,这可以在“onPageStarted()”方法中完成,只需检查 url 以获取使用该位置的页面,如果为真,请询问用户权限并获取设备位置。 如下所示:

@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
    super.onPageStarted(view, url, favicon);
    if(url.equals(locationRequiredUrl) {
    getUserPermission();
    getUserLocation();
    }
    refreshLayout.setRefreshing(true);
}
1 修改AJAX自动完成的位置

尽管尝试了两种方法,但我似乎无法移动自动完成建议。 这是代码: 我正在使用的库是: http : //ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.js 自动完成功能有效,但是我无法控制弹出窗口的位置。 我希望该框 ...

2 如何修改中心位置?

如何修改“中心”的位置? 我什至不知道它怎么称呼 看这里 。 我尝试过调整枢轴点设置,但是它们没有任何效果。 他们不会移动蓝色圆圈。 我没有处理精灵,我有带有Rect转换的TEXT。 该图像仅是示例。 ...

2016-03-14 12:59:38 2 398   unity3d
3 修改genbank特征的位置

编辑 :我知道feature.type将给基因/ CDS和feature.qualifiers然后将给“ db_xref” /“ locus_tag” /“推断”等。有一个feature. 允许我直接访问位置的对象(例如: [5240:7267](+) )? 该URL提供了更多信息,尽管 ...

4 TaskWarrior自动修改UDA

我有个问题。 假设我已经使用值A,B,C创建了用户定义的属性attr 。 当我输入时,如何配置taskwarrior自动将attr值从A更改为B 任务x开始 并将attr从B更改为C 任务x完成 ...

5 自动修改PYTHONPATH

有什么方法可以在我进入目录时自动修改PYTHONPATH。 我通常在我的工作站上有多个项目,每当我在其中一个目录中时,我希望项目的src /覆盖PYTHONPATH中的其他src目录。 ...

2013-11-02 02:32:11 1 45   python
6 自动修改Excel VBA [关闭]

对于客户端,我需要修改数百个Excel电子表格中包含的VBA代码 - 某些dll调用需要通过调用另一个库来替换。 有没有办法编写打开电子表格的程序(VB,.NET,java ...),查看包含的VBA,应用必要的修改并保存它? ...

7 自动修改模型

我有一个带有许多值的json模型。 我将值映射为表单(输入字段)。 然后我编辑值。 我要在按下确认按钮时自动修改模型(将模型字段更改为字段)可以吗? ...

2014-11-21 16:33:34 1 47   sapui5
8 R自动名称修改

我偶然发现了R中的这种奇怪行为: 为什么名称会被串联/堆叠? 我在脚本中找到了这种c(a=b)语法,但是找不到有关它的文档。 是否有任何文档? ...

2011-04-19 06:08:29 2 162   r
9 自动修改 tfstate

我有一个部署到 CloudFront 的 Gitlab CI/CD 管道。 每个应用程序都有一些定义为管道变量的变量,如下所示: 我们管理 CloudFront Terraform,TF 文件存储在 GIT 中的单独存储库中,例如static-appstate 。 该配置使用 S3 后端来存储. ...

10 了解文件的光标位置存储和修改的位置

在使用流写入或读取文件时,我无法理解谁以及如何保留光标位置。 我有以下情况: 为什么新创建的流的位置在 end ? 我不明白,当我写入文件时,光标的位置是否嵌入其中或光标位置存储在哪里?如果没有以某种方式存储这样的位置,那么读取资源的新Stream应该从开始。 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM