Я пытаюсь получить URL из строки, используя JAVA - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь получить URL из строки, используя JAVA.но моя переменная не работает в разделе "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 голосов
/ 17 ноября 2018

Поскольку вы не предоставили никакой информации о том, почему он не работает, я просто предполагаю, что 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);
        }
    });
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...