在 autocompletetextview 中将后缀添加到 url

add postfix to url in autocompletetextview

我有一个自动完成文本视图,用于在网络视图中打开 urls。我想自动添加“.com”作为 urls 的后缀,它没有任何扩展名,如 .com、.tv、.co.in 等。但问题是如何检查是否已经存在输入的 url 中存在扩展名。我搜索了它并找到了这个 post,但它只检查了特定的已知扩展。我想检查是否有任何扩展名。如果存在扩展名则打开 url 如果不存在则将“.com”作为后缀添加到 url.

public class MainActivity extends AppCompatActivity  implements AdvancedWebView.Listener {

    private AdvancedWebView mWebView;
    private AutoCompleteTextView urlEditText;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        urlEditText = (AutoCompleteTextView) findViewById(R.id.urlField);
        mWebView = (AdvancedWebView) findViewById(R.id.webView);
        mWebView.setListener(this, this);
        mWebView.getSettings().setJavaScriptEnabled(true);
        mWebView.setGeolocationEnabled(false);
        mWebView.setMixedContentAllowed(true);
        mWebView.setCookiesEnabled(true);
        mWebView.setThirdPartyCookiesEnabled(true);
        mWebView.setWebViewClient(new WebViewClient() {

            @Override
            public boolean shouldOverrideUrlLoading(WebView v, String url){

                v.loadUrl(url);

                return true;
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                //Toast.makeText(MainActivity.this, "Finished loading", Toast.LENGTH_SHORT).show();
            }

        });
        mWebView.setWebChromeClient(new WebChromeClient() {

            @Override
            public void onReceivedTitle(WebView view, String title) {
                super.onReceivedTitle(view, title);
                Toast.makeText(MainActivity.this, title, Toast.LENGTH_SHORT).show();
            }

        });
        mWebView.addHttpHeader("X-Requested-With", "");



        Button openUrl = (Button) findViewById(R.id.goButton);
        openUrl.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {

                InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);


                String url = urlEditText.getText().toString();

                if(!url.contains("http://www."))
                    url = "http://www." + url;

               
                // Here should be the code to check for extensions

                try{
                    mWebView.loadUrl(url);
                    urlEditText.setText(mWebView.getUrl());
                    imm.hideSoftInputFromWindow(urlEditText.getWindowToken(), 0);
                }catch(Exception e)
                {
                    e.printStackTrace();
                }



            }


        });
    }

    @SuppressLint("NewApi")
    @Override
    protected void onResume() {
        super.onResume();
        mWebView.onResume();
        // ...
    }

    @SuppressLint("NewApi")
    @Override
    protected void onPause() {
        mWebView.onPause();
        // ...
        super.onPause();
    }

    @Override
    protected void onDestroy() {
        mWebView.onDestroy();
        // ...
        super.onDestroy();
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
        super.onActivityResult(requestCode, resultCode, intent);
        mWebView.onActivityResult(requestCode, resultCode, intent);
        // ...
    }

    @Override
    public void onBackPressed() {
        if (!mWebView.onBackPressed()) { return; }
        // ...
        super.onBackPressed();
    }

    @Override
    public void onPageStarted(String url, Bitmap favicon) {
        mWebView.setVisibility(View.INVISIBLE);
    }

    @Override
    public void onPageFinished(String url) {
        mWebView.setVisibility(View.VISIBLE);
    }

    @Override
    public void onPageError(int errorCode, String description, String failingUrl) {
        Toast.makeText(MainActivity.this, "onPageError(errorCode = "+errorCode+",  description = "+description+",  failingUrl = "+failingUrl+")", Toast.LENGTH_SHORT).show();

    }

    @Override
    public void onDownloadRequested(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) {
        Toast.makeText(MainActivity.this, "onDownloadRequested(url = "+url+",  userAgent = "+userAgent+",  contentDisposition = "+contentDisposition+",  mimetype = "+mimetype+",  contentLength = "+contentLength+")", Toast.LENGTH_LONG).show();

  /*final String filename = UUID.randomUUID().toString();
  if (AdvancedWebView.handleDownload(this, url, filename)) {
   // download successfully handled
  }
  else {
   // download couldn't be handled because user has disabled download manager app on the device
  }*/
    }

    @Override
    public void onExternalPageRequest(String url) {
        Toast.makeText(MainActivity.this, "onExternalPageRequest(url = "+url+")", Toast.LENGTH_SHORT).show();
    }

}

我使用了一种简单的方法来验证 url 和 return true/false 值。如果 url 有效,则按原样打开 url。如果url无效,请在url中添加“.com”,然后打开。

In onCreate use methos like this: 

if(isURL(url)){

            try{
                mWebView.loadUrl(url);
                urlEditText.setText(mWebView.getUrl());
                imm.hideSoftInputFromWindow(urlEditText.getWindowToken(), 0);
            }catch(Exception e)
            {
                e.printStackTrace();
            }

        }else{
            url = url + ".com";

            try{
                mWebView.loadUrl(url);
                urlEditText.setText(mWebView.getUrl());
                imm.hideSoftInputFromWindow(urlEditText.getWindowToken(), 0);
            }catch(Exception e)
            {
                e.printStackTrace();
            }
        }
Method to check if url is valid:

public boolean isURL(String url)
{

         if(Patterns.WEB_URL.matcher(url).matches()){
             return true;
         }else{
             return false;
         }

}