验证 EditText for android 中的特定 URL 输入

Posted

技术标签:

【中文标题】验证 EditText for android 中的特定 URL 输入【英文标题】:Validate Specfic URL input in EditText for android 【发布时间】:2014-09-16 07:45:51 【问题描述】:

我的应用程序是关于从特定网站下载图像,例如www.example.com/img-...

用户将在 EditText 字段中输入 img 的 url。例如www.example.com/img-123

我的问题是,当用户输入错误的 URL 时,即没有图像的 URL,它是空的,例如www.example.com/img-222

我想检测到这一点并告诉用户他们的输入没有链接到图像并重试。

我正在使用isValidUrl() 函数来检测输入是否仅为 WEB_URL 但我想要的是当输入的 url 没有图像时,程序应该告诉他们这是 url 的格式不正确。

我正在使用 Jsoup.connect(url).get();连接到url并获取图像并保存

private boolean isValidUrl(String url) 
    Pattern p = Patterns.WEB_URL;
    Matcher m = p.matcher(url);
    if(m.matches())
        return true;
    else
    return false;

【问题讨论】:

让我稍微理解一下。您要做的是连接到有问题的 url,并在允许用户继续输入他们输入的 url 之前检查那里是否有图像? 如果您有 android 设备.. 检查 Instagram 下载器应用程序.. 我想要类似于输入框 EditText 的东西。当您输入一个没有图像或视频的 URL 时 .. 程序不会保存任何内容或执行任何操作,并且至少会说错误的 URL ...我的应用程序正在从 URL 中保存任何内容,即使它是空的 .. 例如我得到了我的 img对于任何没有数据的 URl,大小 = 0 字节的 .jpg.jpg 我不希望这样 如果有帮助,请通过以下链接:- [***.com/questions/3453641/… [1]: ***.com/questions/3453641/… 【参考方案1】:

我们可以使用android原生的android.webkit.URLUtil类来验证任何类型的url。

URLUtil.isValidUrl(downloadImaheEditText.getText().toString());

如果有效返回真,否则

【讨论】:

【参考方案2】:
String[] schemes = "http","https"; //DEFAULT schemes = "http", "https", "ftp"

UrlValidator urlValidator = new UrlValidator(schemes);

if (urlValidator.isValid("http://www.google.com")) 
    //url is valid
else
    //url is invalid

使用 Apache commons-validator URLValidator class

【讨论】:

【参考方案3】:

我试过这个,它对我有用。请在下面找到代码sn-p:

public static boolean isURL(String url) 
        Pattern p = Patterns.WEB_URL;
        Matcher m = p.matcher(url.toLowerCase());
        return m.matches();
    

【讨论】:

以上是关于验证 EditText for android 中的特定 URL 输入的主要内容,如果未能解决你的问题,请参考以下文章

Android电子邮件EditText验证[重复]

Android EditText方框验证码 短信验证码攻略

50个Android开发技巧(09 避免用EditText对日期进行验证)

如何在 Android 中验证单选按钮组?

EditText监听器------实时监听

Android 的 EditText 问题:KeyListener