使用渐进式Web应用程序,我可以检索手机的电话号码吗?我猜肯定不 - 但也许如果网络浏览器可以要求用户访问,用户可以让浏览器访问手机号码?
这个问题专门针对安卓手机。
如果网页可以只有一个显示"复制电话号码"的按钮,并且可以在相应的字段中填写用户的电话号码,那就太棒了。
你可以在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");
您的方法,并基于另一个问题:
以编程方式获取安卓手机的电话号码
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>
您也可以向 Web 视图发送响应。 请参阅本教程。 它在 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版本,则需要实现权限请求。 我希望它有所帮助。
确实很棒,但 PWS 不与所有者信息交互,您可以触发不同的事件,当涉及到相机、位置和几乎所有可以与硬件和顶级软件架构交互的"侵入性"功能时,可能需要许可,但据我所知,只有本机应用程序有能力与用户信息交互, 联系人等;
您可以创建一个模式,以便在一个人不在场时不断点击该人的号码,或者创建一个设置向导以在启动时运行,这将需要电话号码;但是出于明显的安全原因,以编程方式访问设备并在PWS/网站应用程序中获取号码几乎是不可能的。
如果您只关注 Android,请查看联系人选择器 API。在撰写本文时,它仅适用于Chrome 77 +和Android M或更高版本。
我认为您不能使用此API使用"复制电话号码"按钮,因为设备用户必须明确选择要共享的信息,但用户可以简单地从手机的联系人列表中选择自己的号码并继续。