Son Forum Aktiviteleri

3
Tümünü Gör

Webview Link problemi (tel: href:) Lütfen yardım

Merhaba proje dosyamı ekte gönderdim lakin işin içinden bir türlü çıkamıyorum. benim sorunum şu;
Webview ile local ya da internet sitesi üzerinden (html5 uyumlu) içeriğimi sorunsuz çalıştırıyorum. APK istediğim gibi oluyor lakin linkleri tikladiğim zaman UYGULAMA DURDU hatası alıyorum hiç bir şekilde linkler çalışmıyor

ilgili projeyi ham haliyle koydum. Projenin asli: https://github.com/slymax/webview adresinde bulunuyor.

ör:<a href="tel:05322222222">arama</a>

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.app" >
   
    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"></uses-permission>
    <uses-permission android:name="android.permission.VIBRATE"></uses-permission>
    <uses-permission android:name="com.google.android.c2dm.permission.RECEIVE"></uses-permission>
    <uses-permission android:name="android.permission.READ_PHONE_STATE"></uses-permission>
    <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        <activity
            android:name="com.example.app.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

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

Mainactivity.java
 

package com.example.app;

import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;


public class MainActivity extends Activity {

    private WebView mWebView;

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

        mWebView = (WebView) findViewById(R.id.activity_main_webview);

        // Force links and redirects to open in the WebView instead of in a browser
        mWebView.setWebViewClient(new WebViewClient());

        // Enable Javascript
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);

        // Use remote resource
        mWebView.loadUrl("http://example.com");

        // Stop local links and redirects from opening in browser instead of WebView
       mWebView.setWebViewClient(new MyAppWebViewClient());

        // Use local resource
        // mWebView.loadUrl("file:///android_asset/www/index.html");
    }

    // Prevent the back-button from closing the app
    @Override
    public void onBackPressed() {
        if(mWebView.canGoBack()) {
            mWebView.goBack();
        } else {
            super.onBackPressed();
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();

        //noinspection SimplifiableIfStatement
        if (id == R.id.action_settings) {
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
}


MyAppWebViewClient.java

package com.example.app;

import android.content.Intent;
import android.net.Uri;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyAppWebViewClient extends WebViewClient {

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if (Uri.parse(url).getHost().endsWith("example.com")) {
            return false;
        }

        Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
        view.getContext().startActivity(intent);
        return true;
    }
}

activity_main.xml
 

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <WebView
        android:id="@+id/activity_main_webview"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</RelativeLayout>

ne yaptım ne ettiysem web sitesinde olusturdugum linkleri tiklayamıyorum. telefonla arama link'i tikladiginda uygulama hata verip kapaniyor. kısaca hyper linklerde bu problemi yasiyorum.

nerede ne hata var?

denemedigim hiç bir şey kalmadi.

ek olarak ataştirmalarin neticesinde asagidaki koduda eklemem lazimmiş fakat buda calismadi. acaba asagidaki kodu yanlis mi ekliyorum? dogrusu nereye ve nasildir?

tecrübeli arkadaslardan yardımını rica ediyorum teşekkürler.

 

public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith("tel:")) { 
        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
        startActivity(intent);
        view.reload();
        return true;
    }

    view.loadUrl(url);
    return true;
}

 

8 yıl 2 ay önce yanıtladın

Android webview link sorunu (Tel:)

Herkese  merhabalar,

 

burada mükemmel bir webvview için çalışma hazırlanmış ilgili çalışmanında videosu burada

Ben sorunsuz html5 sitemi, webview ile apk yapabiliyorum lakin sitemde normal mobil ile arama butonuna tikladiginda arama yapilirken, webview apk ile UYGULAMA hatası veriyor. 

ne yaptımsa olmadı muhakkak yanliş bir şeyler yaptigim aşikar.

Aşağıda bulunan kod parçacığını ekledim. OLMADI
bunu yaparken <uses-permission android:name="android.permission.CALL_PHONE" /> izininide verdim olmadi.

sizden ricam github üzerinden projenin ilgili dosyasını indirip bana yol götermeniz. 

public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (url.startsWith("tel:")) { 
        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse(url)); 
        startActivity(intent);
        view.reload();
        return true;
    }

    view.loadUrl(url);
    return true;
}

 

8 yıl 2 ay önce yanıtladın

Webview Link problemi (tel: href:) Lütfen yardım

20 Şubat 2016 tarihinde cevaplandı

Sorunum hala devam ediyor çözebilmiş değilim