2012-08-23 4 views
1

WebView을 기반으로하는 작은 앱을 만들었습니다. myWebView.loadUrl()에있는 도메인을 제외한 모든 링크를 WebView에서 열지 않고 브라우저로 보내고 싶습니다. 그리고 사용자의 메일 프로그램에 대한 링크를 mailto://에게 보내고 싶습니다.안드로이드 앱에서 shouldOverrideUrlLoading을 사용할 수 없습니다.

나는 shouldOverrideUrlLoading()을 사용하여 발견 한 몇 가지 예를 시도했으나 오류가 발생할 때마다 또는 작동하지 않을 때마다 시도했습니다. 나는 멍청한 놈이고 이해할 수없고 실수를 훨씬 덜 교정 할 수있다. 나의 능력은 복사하여 붙여 넣기에만 국한된다.

누구든지 필요한 코드와 그 아래의 코드 위치를 알려줄 수 있습니까?

package dk.ugenshoroskop.mobil; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class UgensHoroskop extends Activity { 
private WebView myWebView; 

@Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_ugens_horoskop); 

    myWebView = (WebView) findViewById(R.id.webview); 
    myWebView.getSettings().setJavaScriptEnabled(true); 
    myWebView.loadUrl("http://ugens-horoskop.dk/mobile.php"); 
    myWebView.setWebViewClient(new WebViewClient()); 
    }  

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

당신이 그것을 구현하는 시도 유무 :

이것은 내가 무슨 짓을? – Tchoupi

+0

위 코드가 작동하면 브라우저에서 가장 잘 보이는 웹 사이트를 포함하여 모든 링크가 webview에서 열립니다. http 링크에 대한 해결책을 찾았습니다. 허용 할 때 여기에 게시 할 것이고, 여기에 새로운 것이므로 내 자신의 질문에 아직 대답 할 수 없습니다. 나는 여전히 mailto 링크를 메일 프로그램으로 보내는 솔루션을 찾고있다. –

답변

0

많은 시행 착오 끝에 http 링크가 작동하는 데 성공했습니다. 아래에서 해결책을 찾을 수 있습니다. 그러나 mailto 링크는 여전히 작동하지 않습니다. mailto 링크를 클릭하면 현재 해당 작업이 지원되지 않는다고 전합니다. mailto를 작동시키기위한 아이디어는 인정 될 것입니다.

package dk.ugenshoroskop.mobil; 

import android.os.Bundle; 
import android.app.Activity; 
import android.view.KeyEvent; 
import android.view.Menu; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.net.Uri;     /* new in order to handle URIs */ 

public class UgensHoroskop extends Activity { 
private WebView myWebView; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
super.onCreate(savedInstanceState); 
setContentView(R.layout.activity_ugens_horoskop); 

myWebView = (WebView) findViewById(R.id.webview); 
myWebView.getSettings().setJavaScriptEnabled(true); 
myWebView.loadUrl("http://ugens-horoskop.dk/mobile.php"); 
myWebView.setWebViewClient(new WebViewClient()  /* inserted code: */ 
{ 
@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url) 
{ 
if (url.contains("http://ugens-horoskop.dk")) { 
myWebView.loadUrl(url); 
return false; } 
else { 
Intent intent = new Intent(Intent.ACTION_VIEW); 
intent.setData(Uri.parse(url)); 
startActivity(intent); 
return true; 
} 
} 
} 

/* end inserted code */ 
); 
}  

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

위의 코드는 Eclipse의 에뮬레이터에는 없지만 내 Samsung S3의 mailto 링크에서 작동합니다. –

관련 문제