まぁ、↓を使ってみたんですが、これがうまくいかない。
navigator.geolocation.getCurrentPosition(showPosition, handleError);
で調べてみると、WebChromeClient#onGeolocationPermissionsShowPromptをオーバーライドしてコールバックで結果を返す必要があるということがわかりました。
でも、プロンプト出さずにcallback.invoke(origin, true, false);を呼べば、それらしく動作する。
これはコンテンツをつくるがわのモラルの話?になるんだろうか。コードはこんなかんじ。
webView.setWebChromeClient(new WebChromeClient(){
public void onGeolocationPermissionsShowPrompt(final String origin, final Callback callback) {
super.onGeolocationPermissionsShowPrompt(origin, callback);
//プロンプトなして、Geolocationを有効にする
SCAlertDialog.SCBuilder builder = new SCAlertDialog.SCBuilder(SharedInfo.getInstance().getContext());
builder.setMessage("じおろける?");
builder.setPositiveButton(
R.string.OK,
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
//finish()はonPause()にいろいろと手を入れる必要があるので・・・
callback.invoke(origin, true, false);
}
}
);
builder.setNegativeButton(R.string.Cancel, null);
AlertDialog dialog = builder.create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.token = SekaiApps.sharedApplication().getWindow().getAttributes().token;
window.setAttributes(lp);
// ダイアログを表示
dialog.show();
}
});
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // javascriptを有効にする
public void onGeolocationPermissionsShowPrompt(final String origin, final Callback callback) {
super.onGeolocationPermissionsShowPrompt(origin, callback);
//プロンプトなして、Geolocationを有効にする
SCAlertDialog.SCBuilder builder = new SCAlertDialog.SCBuilder(SharedInfo.getInstance().getContext());
builder.setMessage("じおろける?");
builder.setPositiveButton(
R.string.OK,
new DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog, int whichButton){
//finish()はonPause()にいろいろと手を入れる必要があるので・・・
callback.invoke(origin, true, false);
}
}
);
builder.setNegativeButton(R.string.Cancel, null);
AlertDialog dialog = builder.create();
Window window = dialog.getWindow();
WindowManager.LayoutParams lp = window.getAttributes();
lp.token = SekaiApps.sharedApplication().getWindow().getAttributes().token;
window.setAttributes(lp);
// ダイアログを表示
dialog.show();
}
});
WebSettings webSettings = webView.getSettings();
webSettings.setJavaScriptEnabled(true); // javascriptを有効にする
0 件のコメント:
コメントを投稿