我可以使用Progressive Web App检索手机的电话号码吗

时间:2018-07-03 00:32:57

标签: android mobile progressive-web-apps

使用渐进式Web应用程序,我可以检索手机的电话号码吗?我想肯定是没有-但是也许Web浏览器是否可以要求用户访问用户是否可以向浏览器访问手机号码?

这个问题专门针对Android手机。

如果网页上只有一个按钮,上面写着“复制电话号码”,并且可以在相应的字段中填写用户的电话号码,那就太棒了。

3 个答案:

答案 0 :(得分:1)

您可以在Android上实现JavascriptInterface。

看看这个答案。

https://es.stackoverflow.com/questions/127574/javascript-interface-android-webview-call-java-function-from-js-onclick

基于此,您可以编写如下代码:

JavaScriptInterface jsInterface = new JavaScriptInterface();
myWebView.addJavascriptInterface(jsInterface, "Android");

您的方法,并根据另一个问题:

Programmatically obtain the phone number of the Android phone

public class JavaScriptInterface {

    @JavascriptInterface
    public void getPhoneNumber() {
     // Code to get phone number on android
     TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
     String phoneNumber = tMgr.getLine1Number();

    }

}

在网络上:

<a href="#" onclick="getPhoneNumber()">getMyNumber</a>

您也可以向Webview发送回复。请参阅本教程。它在Koltin中,但是如果需要,可以在Java上编写。

https://medium.com/@elye.project/making-android-interacting-with-web-app-921be14f99d8

基于此,您可以编写如下代码:

myWebView.loadUrl("javascript: " +"returnPhoneNumber(\"" + phoneNumber + "\")", null);

您需要在js中使用一个名为“ returnPhoneNumber”的函数

别忘了在清单中放上权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

如果您使用的是较新的Android版本,则需要实施权限请求。 希望对您有所帮助。

答案 1 :(得分:1)

确实很棒,但是PWS不会与所有者信息进行交互,您可以触发不同的事件,这些事件可能涉及摄像头,位置以及几乎任何可以与硬件和顶级交互的“侵入式”功能,都需要获得许可软件架构,但据我所知,只有本机应用程序才具有与用户信息,联系人等进行交互的功能;

您可以创建一个模态以在不存在时不断向该人打一个电话,或者创建一个设置向导以在启动时运行,该操作需要电话号码;但是出于明显的安全原因,几乎不可能以编程方式访问设备并在PWS /网站应用程序中获取号码。

答案 2 :(得分:0)

如果您仅关注Android,请查看Contact Picker API。在撰写本文时,它仅适用于Chrome 77+和Android M或更高版本。

我认为您无法通过此API使用“复制电话号码”按钮,因为设备用户必须明确选择要共享的信息,但是用户可以仅从电话联系人中选择自己的电话号码列出并继续。