Android 中的功能点
Android 隐藏导航栏
1 | <item name= "android:windowFullscreen" > true </item> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | public void setStatusBarFullTransparent() { if (Build.VERSION.SDK_INT >= 21 ) { //21表示5.0 Window window = getWindow(); // window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN // | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR); // window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE); // window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); // window.setStatusBarColor(Color.TRANSPARENT); // 隐藏状态栏 getWindow().getDecorView().setSystemUiVisibility( View.SYSTEM_UI_FLAG_LAYOUT_STABLE | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY ); // getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_FULLSCREEN ); } else if (Build.VERSION.SDK_INT >= 19 ) { //19表示4.4 getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); //虚拟键盘也透明 //getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION); } } |
Android的webView唤起打印机
1 2 3 4 5 6 7 8 9 10 | public void printWeb() { Log.i(TAG, "printWeb" ); if (mWebView != null ) { String name = mWebView.getTitle()+ ".pdf" ; PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE); PrintAttributes.Builder builder = new PrintAttributes.Builder(); builder.setColorMode(PrintAttributes.COLOR_MODE_COLOR); printManager.print( "Print" , mWebView.createPrintDocumentAdapter(name), builder.build()); } } |
Android & H5交互
1、Android 设置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | mLayoutRoot.addView(mWebView); WebSettings mWebSettings = mWebView.getSettings(); mWebSettings.setSupportZoom( true ); mWebSettings.setLoadWithOverviewMode( true ); mWebSettings.setUseWideViewPort( true ); mWebSettings.setDefaultTextEncodingName( "utf-8" ); mWebSettings.setAllowContentAccess( true ); mWebSettings.setAllowFileAccess( true ); mWebSettings.setAllowFileAccessFromFileURLs( false ); mWebSettings.setAllowUniversalAccessFromFileURLs( false ); mWebSettings.setLoadsImagesAutomatically( true ); mWebSettings.setCacheMode(WebSettings.LOAD_NO_CACHE); //新添加,解决个别机型不兼容的问题 mWebSettings.setTextZoom( 100 ); mWebView.getSettings().setUserAgentString(mWebView.getSettings().getUserAgentString()+ "lianxin-commom-app" ); //自动播放音乐 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { mWebSettings.setMediaPlaybackRequiresUserGesture( false ); } if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { mWebSettings.setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW); } //调用JS方法.安卓版本大于17,加上注解 @JavascriptInterface mWebSettings.setJavaScriptEnabled( true ); saveData(mWebSettings); newWin(mWebSettings); mWebView.setWebChromeClient(webChromeClient); mWebView.setWebViewClient(webViewClient); addJsListener( this , "NativeBridge" ); mWebView.loadUrl(url); |
1 2 3 4 | @SuppressLint ( "JavascriptInterface" ) public void addJsListener(Object obj, String bridgeName) { mWebView.addJavascriptInterface(obj, bridgeName); } |
2、js调用Android的方法
1 2 3 4 5 6 | //JS调用Android方法 @JavascriptInterface public String jsCallAndroid(){ Toast.makeText( this , "JS调用Android方法成功" ,Toast.LENGTH_LONG).show(); return result; } |
1 2 3 4 5 6 | //JS调用Android方法-带参数 @JavascriptInterface public String jsCallAndroid( int type){ Toast.makeText( this , "JS调用Android方法成功,type----" +type,Toast.LENGTH_LONG).show(); return result; } |
如果js 调用的Android的方法内要处理webView 相关的操作,需要在主线程
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | @JavascriptInterface public void printWeb() { Log.i(TAG, "printWeb" ); if (mWebView != null ) { mWebView.post( new Runnable() { @Override public void run() { Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); SimpleDateFormat dateFormat = new SimpleDateFormat( "yyyy-MM-dd" ); String formattedDate = dateFormat.format(calendar.getTime()); String name = "咨询报告" + formattedDate + ".pdf" ; PrintManager printManager = (PrintManager) getSystemService(Context.PRINT_SERVICE); PrintAttributes.Builder builder = new PrintAttributes.Builder(); builder.setColorMode(PrintAttributes.COLOR_MODE_COLOR); printManager.print( "Print" , mWebView.createPrintDocumentAdapter(name), builder.build()); } }); } } |
3、JS调用Android
1 2 3 4 | // JS中调用Android方法 window.NativeBridge.postMessage(message); window.NativeBridge.printWeb(); |
4、Android调用js
1 2 3 4 5 6 7 8 9 10 11 | protected void pushDeviceDataToWeb(String data) { if (mWebView != null ) { runOnUiThread( new Runnable() { @Override public void run() { mWebView.loadUrl( "javascript:pushDeviceDataToWeb( '" + data + "')" ); mWebView.loadUrl( "javascript:pushDeviceDataToWebHome( '" + data + "')" ); } }); } } |
Android WebView a 标签 设置下载监听
//设置下载监听 mWebView.setDownloadListener(new DownloadListener() { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { //进行下载处理,跳转浏览器或者调用系统下载方法 //保存图片到相册 if (!PermissionTool.requestPermission(WebActivity.this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, PERMISSION_REQUEST_CODE)) { new Thread(() -> saveImage(url)).start(); } } });
Android 横屏
1 | android:screenOrientation= "landscape" |
Android 横屏toast 字体变大的处理办法
/** * 更改字体大小 */ protected void initFontScale() { Configuration configuration = getResources().getConfiguration(); configuration.fontScale = 1; //0.85 小, 1 标准大小, 1.15 大,1.3 超大 ,1.45 特大 DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); metrics.scaledDensity = configuration.fontScale * metrics.density; getResources().updateConfiguration(configuration, metrics); }
Android 屏幕常亮
if(开启常亮){ getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // Toast.makeText(this, "屏幕已开启常亮", Toast.LENGTH_SHORT).show(); }else{ getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); // Toast.makeText(this, "屏幕已关闭常亮", Toast.LENGTH_SHORT).show(); }
Android 去设置页面
private void goToSettings() { Intent intent = new Intent(); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { // Android 5.0及以上 intent.setAction("android.settings.APPLICATION_DETAILS_SETTINGS"); intent.setData(Uri.fromParts("package", getPackageName(), null)); } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { // Android 5.0 intent.setAction(Settings.ACTION_SETTINGS); } else { // Android 4.4及以下 intent.setAction(Settings.ACTION_APPLICATION_SETTINGS); intent.addCategory(Intent.CATEGORY_ALTERNATIVE); intent.setData(Uri.parse("package:" + getPackageName())); } startActivity(intent); }
Android 清理数据
// 清理数据 mWebView.clearCache(true); CookieManager.getInstance().removeAllCookies(null); CookieManager.getInstance().flush(); mWebView.clearHistory();
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端
· 因为Apifox不支持离线,我果断选择了Apipost!