2016-08-17 7 views
0

私は外部ウェブページを読み込むアプリケーションを持っています。そのページには別のURLにリダイレクトするリンクがあります。私が欲しいのは、特定のリンクがクリックされてURLが読み込まれると、Webビューが閉じられ、ユーザーが自分のアプリケーションのホーム画面に戻るように、Android Webアプリケーションの内部から外部WebページのURLを追跡することですウェブビューでURLをトラッキングしようとしています

String token; 
WebView viewer; 
@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_web_view); 

    viewer = new WebView(this); 
    viewer.getSettings().setJavaScriptEnabled(true); 
    viewer.setWebViewClient(wvc); 
    setContentView(viewer); 

    Intent intent = getIntent(); 
    token = intent.getStringExtra(home.EXTRA_MESSAGE); 
    String home = "http://10.0.2.2:8888/map/index?token="+token; 

    viewer.loadUrl(home); 

} 
@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && viewer.canGoBack()) 
    { 
     viewer.goBack(); 
     return true; 
    } 
    return super.onKeyDown(keyCode, event); 
} 


private WebViewClient wvc = new WebViewClient() 
{ 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
     if(url == "http://10.0.2.2:8888/map/api/logout") 
     { 
      view.clearHistory(); 
      view.destroy(); 
      return true; 
     } 
     return false; 
    } 
}; 
+0

「外部Webアプリケーションをロードするアプリ」?私が見ているのは、WebViewで外部Webページを読み込むことです。そして、あなたが正確に閉じたいものは不明です。 – greenapps

+0

ええ、私は基本的にWebページをロードしています。このWebページには、URLにリダイレクトするリンクがあります。私が望むのは、アプリケーション内からそのURLを追跡して、リンクが読み込まれると、Webビューが閉じられて自分のアプリケーションに戻るようにすることです。 – lagfvu

+0

あなたのコードに何が問題なのですか? – greenapps

答えて

0

は、この条件は==が参照と比較します

if(url.equals("http://10.0.2.2:8888/map/api/logout")) 

ので、それがあるべき

if(url == "http://10.0.2.2:8888/map/api/logout") 

正しくありません。一方は値ではなく、もう一方は値ではありません。

P.S:今後の変更点やバグはありませんので、equals()ではなくendsWith()を使用してください。 ex、ドメイン名が変更されたあなたの状態はまだ有効です。

if(url.endsWith("map/api/logout")) 
+0

これは機能しますが、条件が満たされている場合、私のアプリのホーム画面に自分のユーザーを戻すにはどうすればいいですか?私はページを開く意図を開始しようとしましたが、動作しませんでした – lagfvu

+0

@lagfvuホーム画面がスタック内の次のアクティビティであれば、単にwebviewアクティビティを 'finish()'してください。これがうまくいかない場合は、新しい質問でこの質問をし、問題に関連するコードを追加する必要があります。この質問は、Webビューの特定のURLを検出/追跡することに関するものでした – Yazan

関連する問題