Soru & Cevap

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

20.02.2016 - 03:01

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;
}

 

124 Görüntülenme

3 Cevap

Sitedeki sorulara cevap verebilmek için giriş yapın ya da üye olun.

picture-26087-1505748298.jpg
nonemre
23.02.2016 - 11:19

Logcat kullanımı:   https://gelecegiyazanlar.turkcell.com.tr/konu/android/egitim/android-201/logcat

picture-26087-1505748298.jpg
nonemre
23.02.2016 - 11:18

Merhaba öncellikle sorunun ne olduğunu bende bulamadım kodlarda bir terslik yok gibi belkide vardır emin değilim fakat hatayı bulabilmek iiçin try catch kullanabilirsiniz bu sayede hatayı görebilirsiniz kod üzerinde try-catch kullanın ve logcat ile hatayı bulun bu yöntem benim çok işime yaramıştı.

Profile picture for user banamailatma
banamailatma
20.02.2016 - 11:44

Sorunum hala devam ediyor çözebilmiş değilim