как в android webview сделать чтобы ссылки открывались в другой приложений
Как в android webview сделать так чтобы ссылки типа whatsapp открывались в официальном приложений, чтобы tel открывал звонилку (телефон)?
Ну или чтобы webview приложение мог определить есть ли на телефоне это приложение и запустить?
Вот мой код:
package com.mixfood.talapker
import android.os.Bundle
import android.webkit.WebView
import android.webkit.WebViewClient
import androidx.appcompat.app.AppCompatActivity
import com.onesignal.OneSignal
const val ONESIGNAL_APP_ID = "*********"
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val webView = findViewById<WebView>(R.id.webView)
webView.settings.javaScriptEnabled = true
webView.settings.setJavaScriptEnabled(true);
webView.settings.setGeolocationEnabled(true);
webView.settings.setAppCacheEnabled(true);
webView.settings.setDatabaseEnabled(true);
webView.settings.setDomStorageEnabled(true);
webView.loadUrl("https://site.com")
// Logging set to help debug issues, remove before releasing your app.
OneSignal.setLogLevel(OneSignal.LOG_LEVEL.VERBOSE, OneSignal.LOG_LEVEL.NONE)
// OneSignal Initialization
OneSignal.initWithContext(this)
OneSignal.setAppId(ONESIGNAL_APP_ID)
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(view: WebView?, url: String?): Boolean {
return false
}
// override fun onPageFinished(view: WebView?, url: String?) {
// super.onPageFinished(view, url)
// val cookies = CookieManager.getInstance().getCookie(url)
// val cookieManager = CookieManager.getInstance()
// cookieManager.acceptCookie()
// cookieManager.setCookie(url,cookies)
// cookieManager.setAcceptThirdPartyCookies(view,true)
// }
}
}
}
Ответы (1 шт):
Автор решения: Andrew
→ Ссылка
Чтобы открыть звонилку, вам нужно передавать в нее номер:
Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:9999999999"));
startActivity(intent);
с WhatsApp выглядит все несколько по-другому, потому что нужно учитывать что у пользователя может не быть этой программы, в базовом варианте это делается так:
public static void setClickToChat(View v,String toNumber){
String url = "https://api.whatsapp.com/send?phone=" + toNumber;
try {
PackageManager pm = v.getContext().getPackageManager();
pm.getPackageInfo("com.whatsapp", PackageManager.GET_ACTIVITIES);
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
v.getContext().startActivity(i);
} catch (PackageManager.NameNotFoundException e) {
v.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
}
вот есть подобный вопрос где описывается как реализовать подобный функционал и вот документация