我正在尝试使用JAVA

时间:2018-11-17 14:52:25

标签: java android variables

我正在尝试使用JAVA从字符串获取URL。但是我的变量在“ Uri.parse”部分中不起作用(变量中没有值)。请考虑我是编码的初学者

错误是:“无法为最终变量'结果'赋值”

我的代码:

showResultDialogue(result.getContents());

..

public void showResultDialogue(final String result) {

        AlertDialog.Builder builder;
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            builder = new AlertDialog.Builder(this, android.R.style.Theme_Material_Dialog_Alert);
        } else {
            builder = new AlertDialog.Builder(this);
        }


        Pattern p = Pattern.compile("[\\w\\.]+\\.(?:com|cc|net|ru|in)[^,\\s]*");
        Matcher m = p.matcher(result);


        builder.setTitle("Example Title")
                .setMessage("Text is " + result);


        if(m.matches()) {
            builder.setPositiveButton("Go", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    Intent browserIntent = new Intent(
                            Intent.ACTION_VIEW,
                            Uri.parse(result) // here is problem
                    );
                    startActivity(browserIntent);
                }
            });
        }

1 个答案:

答案 0 :(得分:1)

由于您没有提供任何有关为何无法正常工作的信息,我只是假设URL丢失http,因为您的正则表达式与此不匹配,在这种情况下,我会这样做

编辑:您真的需要正则表达式吗? Android具有匹配URL的内置方式。

您可以在https://developer.android.com/reference/android/util/Patterns

中找到文档

Patterns.WEB_URL.matcher(result).matches();

所以您的代码将如下所示

if (Patterns.WEB_URL.matcher(result).matches()) {
    builder.setPositiveButton("Go", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int which) {
            Intent browserIntent = new Intent(
                Intent.ACTION_VIEW,
                Uri.parse(!result.startsWith("http://") && !result.startsWith("https://") ? "http://" + result : result)
            );
            startActivity(browserIntent);
        }
    });
}