JavaでWebページを開きます。
方法は2つ
1. アプリからブラウザを立ち上げてWebページを開く
2. アプリ内でWebページを開く
でやりたいことは後者。
前者の場合は
Uri uri = Uri.parse("http://google.co.jp);で終了。
Intent i = new Intent(Intent.ACTION_VIEW,uri);
startActivity(i);
しかし、SetActivityはstaticメソッドから呼び出せないので
CallStaticVoidMethodではなくCallVoidMethodで呼び出さないといけない。
ついでにCallVoidMethodは引数にjclassではなくjobjectをとるので
Java -> C++の関数を呼び出すときに渡されるjobjectをグローバル変数として保存して使いまわし。
jobjectはNewObject関数で作成も出来るけど
元のJavaクラスとは違うインスタンスになる為なのか何なのか
startActivityするとエラーが出るのでこういう場合は使えない。
でもJNIEnvはグローバル変数として保存->使いまわしが出来ないっぽいのに
jobjectはできるのだろうか?
一応動いたけど。
後者の場合は
アプリ -> Web -> アプリと切替を行いたいので
プログラムの挿入箇所はOnCreate()とWebページに移動させる関数内の2箇所
OnCreate()
public void onCreate(Bundle savedInstanceState) {Webページの遷移
...
// WebViewの初期化
webView = new WebView(this);
webView.setWebViewClient(new WebViewClient());
// アプリViewの初期化
this.view = new SurfaceView(this);
//this.view.setRenderer(new GLRenderer());
this.view.getHolder().setType(SurfaceHolder.SURFACE_TYPE_GPU);
view.getHolder().addCallback(this);
setContentView(this.view);
...
}
public void moveWebView()という感じのようです。
{
// Viewの切替
setContentView(webView);
webView.loadUrl("http://www.google.co.jp/");
}
要はsetContentView()でViewの切替をする感じですかね。