错误:找不到符号变量Uri ANDROID

时间:2019-03-17 09:41:56

标签: android

您好,我是android的新手,我有一个网站,仅通过使用**web view**就可以将其转换为移动应用程序了,我现在想要的是一个可放入android中的函数,以便我可以找到所有在网站上拨打电话号码,使其可点击并在拨打电话时拨打该电话。

呼叫功能。 我已经提前

<uses-permission android:name="android.permission.CALL_PHONE" />

而且我已经在mainactivity.java中尝试过

public static void linkifyTextViews(@NonNull TextView... textViews) {
    for (TextView textView : textViews) {
        Linkify.addLinks(textView, Linkify.WEB_URLS);
        textView.setMovementMethod(LinkMovementMethod.getInstance());
    }
}

已编辑

这是我的mainactivity.java文件

package com.business.i13bubbles;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.content.Intent;

public class MainActivity extends AppCompatActivity {
private WebView MywebView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    MywebView = (WebView) findViewById(R.id.view2);
    WebSettings webSettings = MywebView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    MywebView.loadUrl("http://www.13bubbles.com");
    MywebView.setWebViewClient(new WebViewClient());
}

@Override
public void onBackPressed() {
    if (MywebView.canGoBack()) {
        MywebView.goBack();
    } else {
        super.onBackPressed();
    }
}

public boolean shouldOverrideUrlLoading(WebView view2, String url) {
    if (url.startsWith("tel:")) {
        Intent intent = new Intent(Intent.ACTION_DIAL,
                url.parse(url));
        startActivity(intent);
    } else if (url.startsWith("http:") || url.startsWith("https:")) {
        view2.loadUrl(url);
    }
    return true;
}

}

我收到此错误

  

错误:找不到符号方法parse(String)

我的网络视图的ID是view2

你能帮我吗

编辑2

我认为此功能存在错误

public boolean shouldOverrideUrlLoading(WebView view2, String url) {
    if (url.startsWith("tel:")) {
        Intent intent = new Intent(Intent.ACTION_DIAL);

        // Send phone number to intent as data
        intent.setData(Uri.parse(url)); // ERROR LINE IS HERE FOR SURE 

        // Start the dialer app activity with number
        startActivity(intent);
    } else if (url.startsWith("http:") || url.startsWith("https:")) {
        view2.loadUrl(url);
    }
    return true;
}

错误:找不到符号变量Uri

2 个答案:

答案 0 :(得分:1)

在您的示例中,您没有正确实现WebViewClient。我的意思是未使用shouldOverrideUrlLoading,例如,您需要在WebViewClient内实现该方法:

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

答案 1 :(得分:0)

如您先前在previous question中所讨论的,您错误地放置了shouldOverrideUrlLoading()方法。已经纠正。

在这个问题中,您有这段代码:

url.parse(url); //see the first code sample in your question 

此url中是一个字符串,不能包含函数parse()

这可能是导致错误的原因。让我知道是否还有其他问题。

还有一个建议,您在WebView方法中将shouldoverrideUrlLoading()命名为view2。如果仅将其更改为view,就不会造成任何问题。