2016-04-07 12 views
-1

Ich habe eine Autocompletetextview zum Öffnen von URLs in Webview verwendet. Ich möchte ".com" als Postfix automatisch zu URLs hinzufügen, die keine Erweiterungen wie .com, .tv, .co.in, etc. haben. Problem ist aber, wie man überprüft, ob in der eingegebenen URL bereits eine Erweiterung vorhanden ist . Ich suchte danach und fand dieses post, aber es prüfte nur für bestimmte bekannte Erweiterungen. Ich möchte prüfen, ob eine Erweiterung vorhanden ist oder nicht. Wenn die Erweiterung vorhanden ist, öffnet sie die URL, wenn nicht, fügt ".com" als Postfix zu URL hinzu.Postfix zu URL in Autocompletetextview hinzufügen

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(); 
 

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

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

 
}

Antwort

0

benutzte ich eine einfache Methode, die URL und return true/false Wert zu bestätigen. Wenn URL gültig ist, öffne URL wie sie ist. Wenn die URL ungültig ist, fügen Sie ".com" zur URL hinzu und öffnen Sie sie.

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; 
 
     } 
 

 
}