使用渐进式Web应用程序,我可以检索手机的电话号码吗?我想肯定是没有-但是也许Web浏览器是否可以要求用户访问用户是否可以向浏览器访问手机号码?
这个问题专门针对Android手机。
如果网页上只有一个按钮,上面写着“复制电话号码”,并且可以在相应的字段中填写用户的电话号码,那就太棒了。
答案 0 :(得分:1)
您可以在Android上实现JavascriptInterface。
看看这个答案。
基于此,您可以编写如下代码:
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使用“复制电话号码”按钮,因为设备用户必须明确选择要共享的信息,但是用户可以仅从电话联系人中选择自己的电话号码列出并继续。