/** * Creates a new WebViewer component. * * @param container container the component will be placed in */ public WebViewer(ComponentContainer container) { super(container); webview = new WebView(container.$context()); webview.setWebViewClient(new WebViewerClient()); webview.getSettings().setJavaScriptEnabled(true); webview.setFocusable(true); // enable pinch zooming and zoom controls webview.getSettings().setBuiltInZoomControls(true); container.$add(this); webview.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP: if (!v.hasFocus()) { v.requestFocus(); } break; } return false; } }); // set the initial default properties. Height and Width // will be fill-parent, which will be the default for the web viewer. followLinks = true; HomeUrl(""); Width(LENGTH_FILL_PARENT); Height(LENGTH_FILL_PARENT); }
@Override public void setActiveTab(final Tab tab) { mHandler.removeMessages(MSG_HIDE_TITLEBAR); if ((tab != mActiveTab) && (mActiveTab != null)) { removeTabFromContentView(mActiveTab); WebView web = mActiveTab.getWebView(); if (web != null) { web.setOnTouchListener(null); } } mActiveTab = tab; WebView web = mActiveTab.getWebView(); updateUrlBarAutoShowManagerTarget(); attachTabToContentView(tab); setShouldShowErrorConsole(tab, mUiController.shouldShowErrorConsole()); onTabDataChanged(tab); onProgressChanged(tab); mNavigationBar.setIncognitoMode(tab.isPrivateBrowsingEnabled()); updateAutoLogin(tab, false); if (web != null && web.getVisibleTitleHeight() != mTitleBar.getEmbeddedHeight() && !mUseQuickControls) { showTitleBarForDuration(); } }
@Override public void onActivityCreated(Bundle saved) { super.onActivityCreated(saved); view = (WebView) getView().findViewById(R.id.Viewport); // enable JavaScript for cool things to happen! view.getSettings().setJavaScriptEnabled(true); // ----- SWIPE PAGE view.setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (state == ViewStateEnum.books) swipePage(v, event, 0); WebView view = (WebView) v; return view.onTouchEvent(event); } }); // ----- NOTE & LINK view.setOnLongClickListener( new OnLongClickListener() { @Override public boolean onLongClick(View v) { Message msg = new Message(); msg.setTarget( new Handler() { @Override public void handleMessage(Message msg) { super.handleMessage(msg); String url = msg.getData().getString(getString(R.string.url)); if (url != null) navigator.setNote(url, index); } }); view.requestFocusNodeHref(msg); return false; } }); view.setWebViewClient( new WebViewClient() { public boolean shouldOverrideUrlLoading(WebView view, String url) { try { navigator.setBookPage(url, index); } catch (Exception e) { errorMessage(getString(R.string.error_LoadPage)); } return true; } }); loadPage(viewedPage); }
@SuppressLint("SetJavaScriptEnabled") private void setup() { mScale = mActivity.getResources().getDisplayMetrics().density; mWebView.setOnLongClickListener(this); mWebView.setOnTouchListener(this); final WebSettings settings = mWebView.getSettings(); settings.setJavaScriptEnabled(true); settings.setJavaScriptCanOpenWindowsAutomatically(true); mSelectionController = new TextSelectionController(this); mWebView.addJavascriptInterface(mSelectionController, TextSelectionController.INTERFACE_NAME); createSelectionLayer(mActivity); }
private void initView() { // To change body of created methods use File | Settings | File Templates. webView = (WebView) findViewById(R.id.webView); WebSettings webSettings = webView.getSettings(); webSettings.setSavePassword(false); webSettings.setSaveFormData(false); webSettings.setJavaScriptEnabled(true); webSettings.setSupportZoom(true); webView.setOnTouchListener(this); if (mNavLeftButton == null) { mNavLeftButton = (ImageView) findViewById(R.id.nav_left_image); } mNavLeftButton.setVisibility(View.VISIBLE); mNavLeftButton.setOnClickListener(this); loadData(); }
private void renderView() { // reference final WebView webView = (WebView) mRootView.findViewById(R.id.fragment_main_webview); final AdView adView = (AdView) mRootView.findViewById(R.id.fragment_main_adview); // webview settings webView.getSettings().setBuiltInZoomControls(false); webView.getSettings().setSupportZoom(true); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.getSettings().setJavaScriptEnabled(true); webView.setBackgroundColor(getResources().getColor(R.color.global_bg_front)); webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); // fixes scrollbar on Froyo webView.setWebChromeClient( new WebChromeClient() { public void openFileChooser(ValueCallback<Uri> filePathCallback) { mFilePathCallback4 = filePathCallback; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); startActivityForResult( Intent.createChooser(intent, "File Chooser"), REQUEST_FILE_PICKER); } public void openFileChooser(ValueCallback filePathCallback, String acceptType) { mFilePathCallback4 = filePathCallback; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); startActivityForResult( Intent.createChooser(intent, "File Chooser"), REQUEST_FILE_PICKER); } public void openFileChooser( ValueCallback<Uri> filePathCallback, String acceptType, String capture) { mFilePathCallback4 = filePathCallback; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); startActivityForResult( Intent.createChooser(intent, "File Chooser"), REQUEST_FILE_PICKER); } @Override public boolean onShowFileChooser( WebView webView, ValueCallback<Uri[]> filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) { mFilePathCallback5 = filePathCallback; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("*/*"); startActivityForResult( Intent.createChooser(intent, "File Chooser"), REQUEST_FILE_PICKER); return true; } }); webView.setWebViewClient( new WebViewClient() { private boolean mSuccess = true; @Override public void onPageFinished(final WebView view, final String url) { runTaskCallback( new Runnable() { public void run() { if (getActivity() != null && mSuccess) { showContent( 500); // hide progress bar with delay to show webview content smoothly showActionBarProgress(false); } } }); } @Override public void onReceivedError( final WebView view, final int errorCode, final String description, final String failingUrl) { runTaskCallback( new Runnable() { public void run() { if (getActivity() != null) { mSuccess = false; showEmpty(); showActionBarProgress(false); } } }); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (DownloadUtility.isDownloadableFile(url)) { Toast.makeText(getActivity(), R.string.fragment_main_downloading, Toast.LENGTH_LONG) .show(); DownloadUtility.downloadFile(getActivity(), url, DownloadUtility.getFileName(url)); return true; } else if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) { // determine for opening the link externally or internally boolean external = isLinkExternal(url); boolean internal = isLinkInternal(url); if (!external && !internal) { external = WebViewAppConfig.OPEN_LINKS_IN_EXTERNAL_BROWSER; } // open the link if (external) { startWebActivity(url); return true; } else { showActionBarProgress(true); return false; } } else if (url != null && url.startsWith("mailto:")) { MailTo mailTo = MailTo.parse(url); startEmailActivity(mailTo.getTo(), mailTo.getSubject(), mailTo.getBody()); return true; } else if (url != null && url.startsWith("tel:")) { startCallActivity(url); return true; } else if (url != null && url.startsWith("sms:")) { startSmsActivity(url); return true; } else if (url != null && url.startsWith("geo:")) { startMapSearchActivity(url); return true; } else { return false; } } }); webView.setOnKeyListener( new View.OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { WebView webView = (WebView) v; switch (keyCode) { case KeyEvent.KEYCODE_BACK: if (webView.canGoBack()) { webView.goBack(); return true; } break; } } return false; } }); webView.requestFocus( View .FOCUS_DOWN); // http://android24hours.blogspot.cz/2011/12/android-soft-keyboard-not-showing-on.html webView.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP: if (!v.hasFocus()) { v.requestFocus(); } break; } return false; } }); // admob if (WebViewAppConfig.ADMOB && NetworkManager.isOnline(getActivity())) { AdRequest adRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR) .addTestDevice(getString(R.string.admob_test_device_id)) .build(); adView.loadAd(adRequest); adView.setVisibility(View.VISIBLE); } else { adView.setVisibility(View.GONE); } }
@Override protected void onPostExecute(Boolean result) { mIsPostTaskRunning = false; if (!result) { /* * post couldn't be loaded (?) */ txtTitle.setText(R.string.reader_title_err_unable_to_load_post); txtSource.setVisibility(View.GONE); imgAvatar.setImageResource(R.drawable.ic_error); return; } // likes appears above the webView so force the like layout to take up space before loading // them in refreshLikes() - this way the webView won't appear and then be pushed down the // page once likes are loaded if (mPost.numLikes > 0 && mLayoutLikes.getVisibility() == View.GONE) mLayoutLikes.setVisibility(View.INVISIBLE); if (mPost.hasTitle()) { txtTitle.setText(mPost.getTitle()); } else { txtTitle.setText(R.string.reader_untitled_post); } // tapping title layout opens post in browser layoutTitle.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { ReaderActivityLauncher.openUrl(ReaderPostDetailActivity.this, mPost.getUrl()); } }); // blog name / author name / date txtSource.setText(mPost.getSource()); if (mPost.hasPostAvatar()) { int avatarSz = getResources().getDimensionPixelSize(R.dimen.reader_avatar_sz_medium); imgAvatar.setImageUrl( mPost.getPostAvatarForDisplay(avatarSz), WPNetworkImageView.ImageType.AVATAR); imgAvatar.setVisibility(View.VISIBLE); } else { imgAvatar.setVisibility(View.GONE); } // enable reblogging wp posts btnReblog.setVisibility(mPost.isWP() ? View.VISIBLE : View.GONE); btnReblog.setSelected(mPost.isRebloggedByCurrentUser); if (mPost.isWP()) { btnReblog.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { doPostReblog(btnReblog, mPost); } }); } // enable adding a comment if comments are open on this post if (mPost.isWP() && mPost.isCommentsOpen) { btnComment.setVisibility(View.VISIBLE); btnComment.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { toggleShowAddCommentBox(); } }); } else { btnComment.setVisibility(View.GONE); } // webView settings must be configured on main thread - note that while JavaScript is // required for embedded videos, it's disabled since it's a security risk: // http://developer.android.com/training/articles/security-tips.html#WebView // note: even with JavaScript enabled video embeds are unreliable (some work, some don't) webView.getSettings().setJavaScriptEnabled(false); webView.getSettings().setUserAgentString(Constants.USER_AGENT); webView .getSettings() .setLayoutAlgorithm( WebSettings.LayoutAlgorithm.NARROW_COLUMNS); // <-- not sure this is necessary // webView is hidden at design time, don't show it until the page finishes loading so it // has time to layout the post before it appears... webView.setWebViewClient( new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { if (webView.getVisibility() != View.VISIBLE) webView.setVisibility(View.VISIBLE); } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { // open clicked urls in default browser or else urls will open in this webView, // but only do this when webView has loaded (is visible) - have seen some posts // containing iframes automatically try to open urls (without being clicked) // before the page has loaded if (view.getVisibility() == View.VISIBLE) { ReaderActivityLauncher.openUrl(ReaderPostDetailActivity.this, url); return true; } else { return false; } } }); // ...but force it to appear after a few seconds to ensure user never has to be faced // with a blank post for too long (very important on slow connections) new Handler() .postDelayed( new Runnable() { @Override public void run() { if (webView.getVisibility() != View.VISIBLE) { webView.setVisibility(View.VISIBLE); ReaderLog.w("forced webView to appear before page finished"); } } }, 2500); // detect image taps so we can open images in the photo viewer activity webView.setOnTouchListener( new View.OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_UP) { HitTestResult hr = ((WebView) v).getHitTestResult(); if (hr != null && (hr.getType() == HitTestResult.IMAGE_TYPE || hr.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE)) { String imageUrl = hr.getExtra(); if (imageUrl == null) return false; // skip if image is a file: reference - this will be the video overlay, ie: // file:///android_res/drawable/ic_reader_video_overlay.png if (imageUrl.startsWith("file:")) return false; // skip if image is a video thumbnail (see processVideos) if (mVideoThumbnailUrls.contains(imageUrl)) return false; // skip if image is a VideoPress thumbnail (anchor around thumbnail will // take user to actual video - see ReaderPost.cleanupVideoPress) if (imageUrl.contains("videos.files.")) return false; showPhotoViewer(imageUrl); return true; } } return false; } }); // IMPORTANT: must use loadDataWithBaseURL() rather than loadData() since the latter often // fails // https://code.google.com/p/android/issues/detail?id=4401 webView.loadDataWithBaseURL(null, postHtml, "text/html", "UTF-8", null); // only show action buttons for WP posts mLayoutActions.setVisibility(mPost.isWP() ? View.VISIBLE : View.GONE); // make sure the adapter is assigned now that we've retrieved the post and updated views if (!hasCommentAdapter()) getListView().setAdapter(getCommentAdapter()); refreshFollowed(); refreshLikes(); refreshComments(); // get the latest info for this post if we haven't updated it already if (!mHasAlreadyUpdatedPost) { updatePost(); mHasAlreadyUpdatedPost = true; } // show the listView now that post has loaded and views have been updated getListView().setVisibility(View.VISIBLE); }
private void bindData() { // reference final WebView webView = (WebView) mRootView.findViewById(R.id.fragment_example_webview); // webview settings webView.getSettings().setBuiltInZoomControls(true); webView.getSettings().setSupportZoom(true); webView.getSettings().setDefaultZoom(ZoomDensity.MEDIUM); webView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE); webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setPluginState(WebSettings.PluginState.ON); webView.setBackgroundColor(getResources().getColor(R.color.global_bg_front)); webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY); // fixes scrollbar on Froyo webView.setWebChromeClient( new WebChromeClient()); // http://stackoverflow.com/questions/8541443/whats-causing-this-nullpointerexception webView.setWebViewClient( new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { if (getActivity() != null) { Toast.makeText(getActivity(), mUrl, Toast.LENGTH_LONG).show(); mStatefulLayout.showContent(); } } @Override public void onReceivedError( WebView view, int errorCode, String description, String failingUrl) { if (getActivity() != null) { webView.loadUrl("about:blank"); Toast.makeText(getActivity(), errorCode + ": " + description, Toast.LENGTH_LONG) .show(); mStatefulLayout.showEmpty(); } } @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) { view.getContext().startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(url))); return true; } else { return false; } } }); webView.setOnKeyListener( new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (event.getAction() == KeyEvent.ACTION_DOWN) { WebView webView = (WebView) v; switch (keyCode) { case KeyEvent.KEYCODE_BACK: if (webView.canGoBack()) { webView.goBack(); return true; } break; } } return false; } }); webView.requestFocus( View .FOCUS_DOWN); // http://android24hours.blogspot.cz/2011/12/android-soft-keyboard-not-showing-on.html webView.setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP: if (!v.hasFocus()) { v.requestFocus(); } break; } return false; } }); // load web url mStatefulLayout.showProgress(); webView.loadUrl(mUrl); }
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // 去标题 this.requestWindowFeature(Window.FEATURE_NO_TITLE); // 无状态栏 this.getWindow() .setFlags( WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); setContentView(R.layout.main); // 引入历史数据库的实例 mySQLiteHelper = new MySQLiteHelper(main.this, "mydb.db", null, 1); // 浮动输入栏的总的布局(皮肤) skinLayout = (RelativeLayout) findViewById(R.id.skin01); // 引入输入框的实例 myenter01 = (LinearLayout) findViewById(R.id.enter01); enterurl01 = (EditText) findViewById(R.id.enterurl01); myenter02 = (LinearLayout) findViewById(R.id.enter02); enterurl02 = (EditText) findViewById(R.id.enterurl02); okImageView = (ImageView) findViewById(R.id.ImageView01); // 标题、进度条、图标的实例 mytitle = (TextView) findViewById(R.id.title01); myProgressBar = (ProgressBar) findViewById(R.id.progress_horizontal01); myicon = (ImageView) findViewById(R.id.icon); // 欲取得网站的图标,必须设置网站数据库的实例 final WebIconDatabase mydb = WebIconDatabase.getInstance(); mydb.open(getDir("icons", MODE_PRIVATE).getPath()); // ----------------------------------- // SharedPreferences的实例部分:开始 // ----------------------------------- // 主页设置 zhuyesp = main.this.getSharedPreferences("zhuyeset", MODE_PRIVATE); zhuyeEditor = zhuyesp.edit(); // JavaScript设置 jssp = main.this.getSharedPreferences("jsset", MODE_PRIVATE); jsEditor = jssp.edit(); // 缓存设置 cachesp = main.this.getSharedPreferences("cacheset", MODE_PRIVATE); cacheEditor = cachesp.edit(); // 皮肤设置 skinsp = main.this.getSharedPreferences("skinset", MODE_PRIVATE); skinEditor = skinsp.edit(); // 壁纸设置 bizhisp = main.this.getSharedPreferences("bizhiset", MODE_PRIVATE); bizhiEditor = bizhisp.edit(); // ------------------------------------ // SharedPreferences的实例部分:结束 // ------------------------------------ // ---------begin:查询数据,设置皮肤------------------------------- int skinvalue = skinsp.getInt("skin", 0); switch (skinvalue) { case 0: skinLayout.setBackgroundColor(Color.parseColor("#ffd7d7d7")); break; case 1: skinLayout.setBackgroundResource(R.drawable.skin_title_jingdian); break; case 2: skinLayout.setBackgroundResource(R.drawable.skin_title_chitang); break; case 3: skinLayout.setBackgroundResource(R.drawable.skin_title_jijingshouwang); break; case 4: skinLayout.setBackgroundResource(R.drawable.skin_title_kewangfeixiang); break; case 5: skinLayout.setBackgroundResource(R.drawable.skin_title_mengdong); break; case 6: skinLayout.setBackgroundResource(R.drawable.skin_title_xuanlan); break; case 7: skinLayout.setBackgroundResource(R.drawable.skin_title_hetang); break; case 8: skinLayout.setBackgroundResource(R.drawable.skin_title_zhanlantiankong); break; case 9: skinLayout.setBackgroundResource(R.drawable.skin_title_qingchasiyu); break; } // --------end:查询数据,设置皮肤----------------------------------------------------------- // -----begin网页部分--------------------------------------------------------- // 网页视图的实例 myWebView = (WebView) findViewById(R.id.WebView01); // 网页视图的壁纸设置 int bizhivalue = bizhisp.getInt("bizhi", 0); switch (bizhivalue) { case 0: myWebView.setBackgroundColor(0); myWebView.setBackgroundResource(R.drawable.white); break; case 1: myWebView.setBackgroundColor(0); myWebView.setBackgroundResource(R.drawable.chuntian); break; case 2: myWebView.setBackgroundColor(0); myWebView.setBackgroundResource(R.drawable.xiatian); break; case 3: myWebView.setBackgroundColor(0); myWebView.setBackgroundResource(R.drawable.xianhuaduoduo); break; case 4: myWebView.setBackgroundColor(0); myWebView.setBackgroundResource(R.drawable.huayu); break; } myWebView.setOnTouchListener(main.this); gestureDetector = new GestureDetector(main.this); // 网页的覆盖视图的实例 myRelativeLayout = (RelativeLayout) findViewById(R.id.skin01); // 设置网页客户端 myWebView.setWebViewClient(new WebViewClient() {}); // 设置网页chrome客户端 myWebView.setWebChromeClient( new WebChromeClient() { // 设置标题 public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); title = myWebView.getTitle(); dbString = title; mytitle.setText(title); } // 设置进度条 public void onProgressChanged(WebView view, int progress) { myProgressBar.setProgress(progress); if (progress == 100) { myProgressBar.setProgress(0); } } // 设置图标 public void onReceivedIcon(WebView view, Bitmap icon) { super.onReceivedIcon(view, icon); icon = myWebView.getFavicon(); myicon.setImageBitmap(icon); } }); // ------end网页部分--------------------------------------------------------------------- // 输入框的点击事件 enterurl01.setOnClickListener( new LinearLayout.OnClickListener() { public void onClick(View v) { myenter01.setVisibility(View.GONE); myenter02.setVisibility(View.VISIBLE); } }); // 图片按钮的点击事件 okImageView.setOnClickListener( new ImageView.OnClickListener() { public void onClick(View v) { myenter02.setVisibility(View.GONE); myenter01.setVisibility(View.VISIBLE); // 取得网址 strURL = enterurl02.getText().toString(); int length = strURL.length(); if (length == 0) { Toast.makeText(main.this, "请输入网址!", Toast.LENGTH_SHORT).show(); } else { strindex = strURL.substring(0, 7); boolean bln = strindex.equalsIgnoreCase("http://"); if (bln == true) { if (URLUtil.isNetworkUrl(strURL)) { // 进行网址的合法性判断 myWebView.loadUrl(strURL); db = mySQLiteHelper.getReadableDatabase(); // 将数据保存到历史数据库中 ContentValues cv = new ContentValues(); cv.put("title", dbString); cv.put("url", strURL); db.insert("history", null, cv); } else { Toast.makeText(main.this, "请输入合法的网址,谢谢!", Toast.LENGTH_SHORT).show(); } } else if (bln == false) { strURL = ("http://" + strURL); if (URLUtil.isNetworkUrl(strURL)) { myWebView.loadUrl(strURL); db = mySQLiteHelper.getReadableDatabase(); // 将数据保存到历史数据库中 ContentValues cv = new ContentValues(); cv.put("title", dbString); cv.put("url", strURL); db.insert("history", null, cv); // mydb.execSQL("insert into historytable(_id,title,url) // values(1,dbString,strURL);"); } else { Toast.makeText(main.this, "请输入合法的网址,谢谢!", Toast.LENGTH_SHORT).show(); } } } enterurl02.setText(""); } }); // ------begin网页的各项设置------------------------------------- webSettings = myWebView.getSettings(); // JavaScript的设置 boolean jsbln = jssp.getBoolean("jsbln", false); if (jsbln == true) { webSettings.setJavaScriptEnabled(true); } else if (jsbln == false) { webSettings.setJavaScriptEnabled(false); // 缓存 int cachevalue = cachesp.getInt("cache", 1); if (cachevalue == 0) { webSettings.setAppCacheEnabled(true); } else if (cachevalue == 1) { webSettings.setAppCacheEnabled(false); } } // ------end网页的各项设置------------------------------------------------------- }
@SuppressLint("NewApi") public void addTextElement(final String val) { // todo check for URL if (Tools.checkURL(val)) { LinearLayout item = new LinearLayout(this); item.setBackgroundColor(Color.BLACK); item.setLayoutParams(Tools.setMargins()); item.setBackgroundResource(R.drawable.shape); item.setOrientation(LinearLayout.VERTICAL); TableRow.LayoutParams item_params = new TableRow.LayoutParams( ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); item_params.setMargins(5, 8, 5, 8); item.setLayoutParams(item_params); TextView tv = new TextView(this); tv.setTextColor(Color.parseColor("#00FFFF")); tv.setText(val); if (Tools.checkURLType(val)) { // webview ------ w = new WebView(this); WebSettings webSettings = w.getSettings(); webSettings.setJavaScriptEnabled(true); w.setVerticalScrollBarEnabled(false); w.setHorizontalScrollBarEnabled(false); w.setWebViewClient( new WebViewClient() { public void onPageFinished(WebView view, String url) { Picture picture = view.capturePicture(); Bitmap b = Bitmap.createBitmap(view.getWidth(), view.getHeight(), Bitmap.Config.ARGB_8888); Canvas c = new Canvas(b); picture.draw(c); FileOutputStream fos = null; try { fos = new FileOutputStream( Tools.getContextWrapperDir(Notes_Activity.this) + "/temp.jpg"); if (fos != null) { b.compress(Bitmap.CompressFormat.JPEG, 100, fos); fos.close(); } } catch (Exception e) { } } }); w.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { return (event.getAction() == MotionEvent.ACTION_MOVE); } }); w.loadUrl(Tools.checkURLTypeWebView(val)); item.addView(w, new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, 600)); } // clickable item.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { String url = val; Intent i = new Intent(Intent.ACTION_VIEW); i.setData(Uri.parse(url)); startActivity(i); } }); // webicew ------------- item.addView(tv); body.addView(item); scrollDown(); addTimeStamp(); } else { LinearLayout item = new LinearLayout(this); item.setBackgroundColor(Color.BLACK); item.setLayoutParams(Tools.setMargins()); item.setBackgroundResource(R.drawable.shape); TableRow.LayoutParams item_params = new TableRow.LayoutParams( ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); // item_params.gravity =Gravity.LEFT; item_params.setMargins(5, 8, 5, 8); item.setLayoutParams(item_params); TextView tv = new TextView(this); tv.setTextColor(Color.WHITE); tv.setText(val); item.addView(tv); body.addView(item); scrollDown(); addTimeStamp(); } }
private void setWebView() { webSet = web.getSettings(); webSet.setSavePassword(false); webSet.setAllowFileAccess(false); webSet.setJavaScriptEnabled(true); webSet.setSaveFormData(false); webSet.setSupportZoom(true); webSet.setBuiltInZoomControls(true); webSet.setCacheMode(WebSettings.LOAD_NO_CACHE); layout.setScrollBarStyle(SCROLLBARS_OUTSIDE_OVERLAY); web.setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.requestFocus(); return false; } }); web.setWebChromeClient( new WebChromeClient() { // 设置网页加载的进度条 public void onProgressChanged(WebView view, int newProgress) { if (dialog_flag == true) { _showLoading(); dialog_flag = false; } if (newProgress == 100) { dismissLoading(); dialog_flag = true; } } // 设置应用程序的标题 public void onReceivedTitle(WebView view, String title) { super.onReceivedTitle(view, title); } }); web.setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { v.requestFocus(); return false; } }); /* * * URL = ztspeechandroid://OAuthActivity?oauth_token= * f11203c98d813b227204254e3c148884&oauth_verifier=871525 */ web.setWebViewClient( new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { LogInfo.LogOut(TAG, "WebView onPageStarted..."); LogInfo.LogOut(TAG, "URL = " + url); if (url != null) { if (url.indexOf("checkType=verifycode") != -1) { int start = url.indexOf("checkType=verifycode&v=") + 23; String verifyCode = url.substring(start, start + 6); oAuth.setOauthVerifier(verifyCode); view.destroyDrawingCache(); handler.sendMessage( Message.obtain( handler, ZtspeechWeiboManager.CONSTENT_TENCENT_WEIBO_REGIST, oAuth)); } else if (url.contains("ztspeechandroid")) { // handler.sendMessage(Message.obtain(handler, // ZtspeechWeiboManager.CONSTENT_SINA_WEIBO_REGIST, // url)); } } super.onPageStarted(view, url, favicon); } }); }
/** * Creates a new Survey component. * * @param container container the component will be placed in * @throws IOException */ public Survey(ComponentContainer container) throws IOException { super(container); mainUI = container.$form(); exportRoot = new java.io.File(Environment.getExternalStorageDirectory(), mainUI.getPackageName()) + java.io.File.separator + "export"; JsonParser parse = new JsonParser(); webview = new WebView(container.$context()); webview.getSettings().setJavaScriptEnabled(true); webview.setFocusable(true); webview.setVerticalScrollBarEnabled(true); container.$add(this); webview.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP: if (!v.hasFocus()) { v.requestFocus(); } break; } return false; } }); // set the initial default properties. Height and Width // will be fill-parent, which will be the default for the web viewer. Width(LENGTH_FILL_PARENT); Height(LENGTH_FILL_PARENT); // set default survey style style = TEXTBOX; // default style // see if the Survey is created by someone tapping on a notification! // create the Survey and load it in the webviewer /* e.g. * value = { * "style": "multipleChoice", * "question": "What is your favorite food" * "options": ["apple", "banana", "strawberry", "orange"], * "surveyGroup": "MIT-food-survey" * } * */ initValues = container.$form().getSurveyStartValues(); Log.i(TAG, "startVal Suvey:" + initValues.toString()); if (initValues != "") { JsonObject values = (JsonObject) parse.parse(initValues); this.style = values.get("style").getAsString(); this.question = values.get("question").getAsString(); this.surveyGroup = values.get("surveyGroup").getAsString(); ArrayList<String> arrOptions = new ArrayList<String>(); JsonArray _options = values.get("options").getAsJsonArray(); for (int i = 0; i < _options.size(); i++) { arrOptions.add(_options.get(i).getAsString()); } this.options = arrOptions; this.styleFromIntent = values.get("style").getAsString(); Log.i(TAG, "Survey component got created"); } }
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { Log.d(); super.onCreateView(inflater, container, savedInstanceState); setHasOptionsMenu(true); ViewGroup v = (ViewGroup) inflater.inflate(R.layout.browser, null); urlBar = (EditText) v.findViewById(R.id.urlbar); mProgressBar = (ProgressBar) v.findViewById(R.id.progressbar); // Add webview as 3rd child // TODO: I think I did this so it wouldn't be destroyed or state // lost, don't really remember. RelativeLayout.LayoutParams layoutParams = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT); layoutParams.addRule(RelativeLayout.BELOW, R.id.progressbar); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_RIGHT); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_LEFT); layoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); v.addView(mVizWebView, 2, layoutParams); /* if (initialized == false) { SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(getActivity()); String defaultUrl = prefs.getString("browser_homepage", "http://vimeo.com"); Log.d("Got default url: " + defaultUrl); urlBar.setText(defaultUrl); loadUrlFromUrlBar(); initialized = true; } */ urlBar.setOnEditorActionListener( new TextView.OnEditorActionListener() { public boolean onEditorAction(TextView v, int actionId, KeyEvent event) { if ((event != null && event.getAction() == KeyEvent.ACTION_DOWN) || actionId == EditorInfo.IME_ACTION_NEXT || actionId == EditorInfo.IME_ACTION_DONE) { Log.d("onEditorAction(actionId=" + actionId + ", event=" + event + ")"); Activity activity = getActivity(); if (activity == null) { return false; } mBrowser.loadUrlFromUrlBar(); InputMethodManager inputManager = (InputMethodManager) VizApp.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputManager.hideSoftInputFromWindow( activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); return true; } return false; } }); setCanGoBack(); // mVizWebView.requestFocus(); // android issue #7189 (webview text fields not causing virtual // keyboard to popup) mVizWebView.requestFocus(View.FOCUS_DOWN); mVizWebView.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: case MotionEvent.ACTION_UP: if (!v.hasFocus()) { v.requestFocus(); } break; } return false; } }); return v; }
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_securo_bot_main); t1 = new TTSEngine(this); final View controlsView = findViewById(R.id.fullscreen_content_controls); // left leftEye = (ImageView) findViewById(R.id.leftEye); lEResource = R.drawable.blueeyesopenleft; leftEye.setImageResource(lEResource); // right rightEye = (ImageView) findViewById(R.id.rightEye); rEResource = R.drawable.blueeyesopenright; rightEye.setImageResource(rEResource); final View contentView = findViewById(R.id.eyes); // Set up an instance of SystemUiHider to control the system UI for // this activity. mSystemUiHider = SystemUiHider.getInstance(this, contentView, HIDER_FLAGS); mSystemUiHider.setup(); mSystemUiHider.setOnVisibilityChangeListener( new SystemUiHider.OnVisibilityChangeListener() { // Cached values. int mControlsHeight; int mShortAnimTime; @Override @TargetApi(Build.VERSION_CODES.HONEYCOMB_MR2) public void onVisibilityChange(boolean visible) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) { // If the ViewPropertyAnimator API is available // (Honeycomb MR2 and later), use it to animate the // in-layout UI controls at the bottom of the // screen. if (mControlsHeight == 0) { mControlsHeight = controlsView.getHeight(); } if (mShortAnimTime == 0) { mShortAnimTime = getResources().getInteger(android.R.integer.config_shortAnimTime); } controlsView .animate() .translationY(visible ? 0 : mControlsHeight) .setDuration(mShortAnimTime); } else { // If the ViewPropertyAnimator APIs aren't // available, simply show or hide the in-layout UI // controls. controlsView.setVisibility(visible ? View.VISIBLE : View.GONE); } if (visible && AUTO_HIDE) { // Schedule a hide(). delayedHide(AUTO_HIDE_DELAY_MILLIS); } } }); // Set up the user interaction to manually show or hide the system UI. contentView.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { Log.d("TouchEvent", "Content view on click listener called"); if (TOGGLE_ON_CLICK) { mSystemUiHider.toggle(); } else { mSystemUiHider.show(); } } }); webPageView = (WebView) findViewById(R.id.webview); WebSettings webPageSettings = webPageView.getSettings(); webPageSettings.setJavaScriptEnabled(true); webPageView.setVisibility(View.INVISIBLE); webPageView.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { Log.d("Timer", "Webpage view touched"); if (!actionEnable) { // reset the interaction timer if we are displaying stuff mHandler.removeCallbacks(interactionTimer); mHandler.removeCallbacks(timerInterrupt); interactionTimer.run(); Log.d("Timer", "Touch sensed. Timer was reset."); } return false; } }); action = new ActionEngine(t1); mHandler = new Handler(); startRepeatingTask(); }
public final void run() { Log.i("jtwitter", "TwitterAuth run!"); final WebView webview = new WebView(context); webview.setBackgroundColor(Color.BLACK); webview.setVisibility(View.VISIBLE); final Dialog dialog = new Dialog(context, android.R.style.Theme_Black_NoTitleBar_Fullscreen); dialog.setContentView(webview); dialog.show(); webview.getSettings().setJavaScriptEnabled(true); webview.setWebViewClient( new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { Log.d("jtwitter", "url: " + url); if (!url.contains(callbackUrl)) return; Uri uri = Uri.parse(url); String verifier = uri.getQueryParameter("oauth_verifier"); if (verifier == null) { // denied! Log.i("jtwitter", "Auth-fail: " + url); dialog.dismiss(); onFail(new Exception(url)); return; } client.setAuthorizationCode(verifier); String[] tokens = client.getAccessToken(); Twitter jtwitter = new Twitter(null, client); Log.i("jtwitter", "Authorised :)"); dialog.dismiss(); onSuccess(jtwitter, tokens); } @Override public void onPageFinished(WebView view, String url) { Log.i("jtwitter", "url finished: " + url); } }); // Workaround for http://code.google.com/p/android/issues/detail?id=7189 webview.requestFocus(View.FOCUS_DOWN); webview.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent e) { if (e.getAction() == MotionEvent.ACTION_DOWN || e.getAction() == MotionEvent.ACTION_UP) { if (!v.hasFocus()) { v.requestFocus(); } } return false; } }); // getting the url to load involves a web call -- let the UI update first Toast.makeText(context, authoriseMessage, Toast.LENGTH_SHORT).show(); final Handler handler = new Handler(); handler.postDelayed( new Runnable() { @Override public void run() { try { URI authUrl = client.authorizeUrl(); webview.loadUrl(authUrl.toString()); } catch (Exception e) { onFail(e); } } }, 10); }
/** * Creates the UI for the interactive authentication process * * @param provider The provider used for the authentication process * @param startUrl The initial URL for the authentication process * @param endUrl The final URL for the authentication process * @param context The context used to create the authentication dialog * @param callback Callback to invoke when the authentication process finishes */ private void showLoginUI( final String startUrl, final String endUrl, final Context context, LoginUIOperationCallback callback) { if (startUrl == null || startUrl == "") { throw new IllegalArgumentException("startUrl can not be null or empty"); } if (endUrl == null || endUrl == "") { throw new IllegalArgumentException("endUrl can not be null or empty"); } if (context == null) { throw new IllegalArgumentException("context can not be null"); } final LoginUIOperationCallback externalCallback = callback; final AlertDialog.Builder builder = new AlertDialog.Builder(context); // Create the Web View to show the login page final WebView wv = new WebView(context); builder.setOnCancelListener( new DialogInterface.OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { if (externalCallback != null) { externalCallback.onCompleted(null, new MobileServiceException("User Canceled")); } } }); wv.getSettings().setJavaScriptEnabled(true); DisplayMetrics displaymetrics = new DisplayMetrics(); ((Activity) context).getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); int webViewHeight = displaymetrics.heightPixels; wv.setLayoutParams( new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, webViewHeight)); wv.requestFocus(View.FOCUS_DOWN); wv.setOnTouchListener( new View.OnTouchListener() { @Override public boolean onTouch(View view, MotionEvent event) { int action = event.getAction(); if (action == MotionEvent.ACTION_DOWN || action == MotionEvent.ACTION_UP) { if (!view.hasFocus()) { view.requestFocus(); } } return false; } }); // Create a LinearLayout and add the WebView to the Layout LinearLayout layout = new LinearLayout(context); layout.setOrientation(LinearLayout.VERTICAL); layout.addView(wv); // Add a dummy EditText to the layout as a workaround for a bug // that prevents showing the keyboard for the WebView on some devices EditText dummyEditText = new EditText(context); dummyEditText.setVisibility(View.GONE); layout.addView(dummyEditText); // Add the layout to the dialog builder.setView(layout); final AlertDialog dialog = builder.create(); wv.setWebViewClient( new WebViewClient() { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { // If the URL of the started page matches with the final URL // format, the login process finished if (isFinalUrl(url)) { if (externalCallback != null) { externalCallback.onCompleted(url, null); } dialog.dismiss(); } super.onPageStarted(view, url, favicon); } // Checks if the given URL matches with the final URL's format private boolean isFinalUrl(String url) { if (url == null) { return false; } return url.startsWith(endUrl); } // Checks if the given URL matches with the start URL's format private boolean isStartUrl(String url) { if (url == null) { return false; } return url.startsWith(startUrl); } @Override public void onPageFinished(WebView view, String url) { if (isStartUrl(url)) { if (externalCallback != null) { externalCallback.onCompleted( null, new MobileServiceException( "Logging in with the selected authentication provider is not enabled")); } dialog.dismiss(); } } }); wv.loadUrl(startUrl); dialog.show(); }
public View getView(int position, View convertView, ViewGroup parent) { LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); View gridView; if (convertView == null) { gridView = new View(context); // get layout from mobile.xml gridView = inflater.inflate(R.layout.exchange_gift_row, null); gridView.setTag(position); // set value into textview TextView textView = (TextView) gridView.findViewById(R.id.grid_item_label); textView.setText(arraylist.get(position).getHotel_name()); // set image based on selected text String S = "<html> <head> <title>banner</title> </head><body> <img src="; S = S + "\"" + arraylist.get(position).getImages() + "\"" + "alt=\"\"width=\"100%\" height=\"100%\"/></a></body></html>"; WebView w = (WebView) gridView.findViewById(R.id.img); w.loadData(S, "text/html", "UTF-8"); w.setVerticalScrollBarEnabled(false); w.setHorizontalScrollBarEnabled(false); w.setTag(position); /*w.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub int id = (Integer) v.getTag(); MainActivity.loadinwebview(arraylist.get(id).getHotel_link()); } });*/ w.setOnTouchListener( new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { // TODO Auto-generated method stub int id = (Integer) v.getTag(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: DBHelper.addRowhistoy(arraylist.get(id)); // MainActivity.loadinwebview(arraylist.get(id).getHotel_link(),arraylist.get(id).getImages(),arraylist.get(id).getHotel_name()); break; case MotionEvent.ACTION_MOVE: break; case MotionEvent.ACTION_UP: break; default: break; } return true; } }); final ImageView fav = (ImageView) gridView.findViewById(R.id.favourite); fav.setTag(position); fav.setOnClickListener( new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub int id = (Integer) v.getTag(); DBHelper.addRowfavourite(arraylist.get(id)); fav.setImageResource(android.R.drawable.star_big_on); } }); /* gridView.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub int id = (Integer) v.getTag(); DBHelper.addRowhistoy(arraylist.get(id)); Log.d("dfdf", ""+id); MainActivity.loadinwebview(arraylist.get(id).getHotel_link()); } });*/ // w.loadUrl(arraylist.get(position).getImages()); // String mobile = arraylist.get(position).getImages(); /* if (mobile.equals("Windows")) { imageView.setImageResource(R.drawable.windows_logo); } else if (mobile.equals("iOS")) { imageView.setImageResource(R.drawable.ios_logo); } else if (mobile.equals("Blackberry")) { imageView.setImageResource(R.drawable.blackberry_logo); } else { imageView.setImageResource(R.drawable.android_logo); }*/ } else { gridView = (View) convertView; } return gridView; }