1

に基づいて小さなアプリを作成しましたWebView。ドメイン以外のすべてのリンクをmyWebView.loadUrl()で開くのではなく、ブラウザに転送したいと考えていWebViewます。mailto://また、ユーザーのメール プログラムへの直接リンクを設定したいと考えています。

私が使用しているいくつかの例を試してみまし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);
 }       
}
4

1 に答える 1

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);
}       
}
于 2012-08-23T20:12:49.320 に答える