| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299 |
- package com.uas.standard_esop.activity;
- import android.content.Context;
- import android.content.Intent;
- import android.graphics.Color;
- import android.os.Build;
- import android.os.Bundle;
- import android.os.Environment;
- import android.os.Handler;
- import android.os.Message;
- import android.util.Log;
- import android.view.View;
- import android.view.Window;
- import android.view.WindowManager;
- import android.webkit.WebSettings;
- import android.webkit.WebView;
- import android.widget.ImageView;
- import android.widget.LinearLayout;
- import androidx.appcompat.app.AppCompatActivity;
- import com.uas.standard_esop.R;
- import com.uas.standard_esop.util.CommonUtil;
- import com.uas.standard_esop.util.DateFormatUtil;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.InputStream;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.net.URL;
- import java.net.URLConnection;
- import java.util.ArrayList;
- import static com.uas.standard_esop.util.OSUtil.isMIUI;
- import static razerdp.util.RomUtil.isFlyme;
- public class PdfsActivity extends AppCompatActivity {
- private Window window;
- private boolean useThemeStatusBarColor = false;//是否使用特殊的标题栏背景颜色,android5.0以上可以设置状态栏背景色,如果不使用则使用透明色值
- private boolean useStatusBarColor = true;//是否使用状态栏文字和图标为暗色,如果状态栏采用了白色系,则需要使状态栏和图标为暗色,android6.0以上可以设置
- private int option;
- private boolean fullscreen=false;
- private Context context;
- private String destDirPath;
- private String filename;
- private String filepath;
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_pdfs);
- window = getWindow();
- context=this;
- Intent intent = getIntent();
- ArrayList<String> lists = intent.getStringArrayListExtra("lists");
- filename = intent.getStringExtra("filename");
- for (int i=0;i<lists.size();i++){
- filepath = lists.get(i);
- Log.e("smd5", filepath);
- }
- WebView webView = findViewById(R.id.webView);
- ImageView iv_fullscreen = findViewById(R.id.iv_fullscreen);
- ImageView iv_download = findViewById(R.id.iv_download);
- LinearLayout iv_goback = findViewById(R.id.iv_goback);
- ImageView iv_back = findViewById(R.id.iv_back);
- iv_back.setColorFilter(this.getResources().getColor(R.color.zise));
- iv_fullscreen.setColorFilter(this.getResources().getColor(R.color.zise));
- iv_download.setColorFilter(this.getResources().getColor(R.color.zise));
- WebSettings webSettings = webView.getSettings();
- webSettings.setJavaScriptEnabled(true);
- webSettings.setPluginState(WebSettings.PluginState.ON);
- webSettings.setAllowContentAccess(true);
- webSettings.setAllowFileAccess(true);
- webSettings.setAllowFileAccessFromFileURLs(true);
- webSettings.setAllowUniversalAccessFromFileURLs(true);
- webView.loadUrl("file:///android_asset/web/viewer.html?file="+filepath);
- webView.getSettings().setBuiltInZoomControls(true);
- webView.getSettings().setSupportZoom(true);
- webView.getSettings().setDisplayZoomControls(false);//不显示缩放按钮
- iv_goback.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- finish();
- }
- });
- iv_fullscreen.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {//全屏
- if (fullscreen==false){
- fullscreen=true;
- getWindow().addFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- iv_fullscreen.setImageResource(R.drawable.not_fullscreen);
- }else {
- fullscreen=false;
- getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
- iv_fullscreen.setImageResource(R.drawable.fullscreen);
- }
- }
- });
- destDirPath = Environment.getExternalStorageDirectory().getPath() + "//UasEsop//";
- iv_download.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- new Thread(new Runnable() {
- @Override
- public void run() {
- boolean pathExist = isPathExist(destDirPath);
- if (pathExist==true){
- downloadFile1(filepath, destDirPath);
- }else {
- try {
- CreateText(filepath, destDirPath);
- } catch (IOException e) {
- e.printStackTrace();
- }
- }
- }
- }).start();
- }
- });
- }
- /**
- * 判断路径是否存在
- *
- * @param path 需要判断的路径
- * @return true 是存在,false 是不存在
- */
- public boolean isPathExist(String path) {
- File file = new File(path);
- if (file.exists()) {
- return true;
- }
- return false;
- }
- //创建文件夹及文件
- public void CreateText(String filepath,String destDirPath) throws IOException {
- File file = new File(destDirPath);
- if (!file.exists()) {
- try {
- //按照指定的路径创建文件夹
- file.mkdirs();
- downloadFile1(filepath,destDirPath);
- } catch (Exception e) {
- // TODO: handle exception
- }
- }
- }
- public void downloadFile1(String urlPath,String path) {
- try{
- final long startTime = System.currentTimeMillis();
- Log.i("DOWNLOAD","startTime="+startTime);
- //下载函数
- String filenametime= DateFormatUtil.getProofTime();
- //获取文件名
- URL myURL = new URL(urlPath);
- URLConnection conn = myURL.openConnection();
- conn.connect();
- InputStream is = conn.getInputStream();
- int fileSize = conn.getContentLength();//根据响应获取文件大小
- if (fileSize <= 0) throw new RuntimeException("无法获知文件大小 ");
- if (is == null) throw new RuntimeException("stream is null");
- File file1 = new File(path);
- if(!file1.exists()){
- file1.mkdirs();
- }
- //把数据存入路径+文件名
- FileOutputStream fos = new FileOutputStream(path+"/"+filenametime+filename);
- byte buf[] = new byte[1024];
- int downLoadFileSize = 0;
- do{
- //循环读取
- int numread = is.read(buf);
- if (numread == -1)
- {
- break;
- }
- fos.write(buf, 0, numread);
- downLoadFileSize += numread;
- //更新进度条
- } while (true);
- Log.i("DOWNLOAD","download success");
- Log.i("DOWNLOAD","totalTime="+ (System.currentTimeMillis() - startTime));
- Log.i("DOWNLOAD","文件保存到:"+path);
- handler.sendEmptyMessage(0);
- is.close();
- // SPUtils.putString(getContext(),"stades","1");
- } catch (Exception ex) {
- Log.e("DOWNLOAD", "error: " + ex.getMessage(), ex);
- // SPUtils.putString(getContext(),"stades","2");
- }
- }
- private Handler handler = new Handler() {
- @Override
- public void handleMessage(Message msg) {
- // TODO Auto-generated method stub
- CommonUtil.toastNoRepeat(context,"文件保存到"+destDirPath);
- }
- };
- protected void setStatusBar() {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {//5.0及以上
- View decorView = window.getDecorView();
- option = View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE;
- decorView.setSystemUiVisibility(option);
- //根据上面设置是否对状态栏单独设置颜色
- if (useThemeStatusBarColor) {
- window.setStatusBarColor(getResources().getColor(R.color.colorMain));
- } else {
- window.setStatusBarColor(Color.TRANSPARENT);
- }
- } else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {//4.4到5.0
- WindowManager.LayoutParams localLayoutParams = window.getAttributes();
- localLayoutParams.flags = WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS | localLayoutParams.flags;
- }
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && useStatusBarColor) {//android6.0以后可以对状态栏文字颜色和图标进行修改
- window.getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
- }
- setStatusTextColor(true);
- }
- /**
- * 设置状态栏文字色值为深色调
- * @param useDart 是否使用深色调
- */
- private void setStatusTextColor(Boolean useDart) {
- if (useDart) {
- if (isFlyme()){
- processFlyMe(useDart);
- }else if (isMIUI()){
- processMIUI(useDart);
- }else {
- if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M){
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR);
- }else {
- getWindow().getDecorView().setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);//实现状态栏图标和文字颜色为暗色
- }
- }
- }
- }
- private void processFlyMe(Boolean isLightStatusBar) {
- WindowManager.LayoutParams lp = window.getAttributes();
- try {
- // Class instance = getClass().forName("android.view.WindowManager\$LayoutParams");
- Class instance = Class.forName("android.view.WindowManager$LayoutParams");
- int value = instance.getDeclaredField("MEIZU_FLAG_DARK_STATUS_BAR_ICON").getInt(lp);
- Field field = instance.getDeclaredField("meizuFlags");
- field.setAccessible(true);
- int origin = field.getInt(lp);
- if (isLightStatusBar) {
- field.set(lp, (origin | value));
- } else {
- field.set(lp, value & origin);
- }
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- /**
- * 改变小米的状态栏字体颜色为黑色, 要求MIUI6以上 lightStatusBar为真时表示黑色字体
- */
- private void processMIUI(Boolean lightStatusBar) {
- Class clazz = window.getClass();
- try {
- int darkModeFlag;
- // val layoutParams = Class.forName("android.view.MiuiWindowManager\$LayoutParams")
- Class layoutParams = Class.forName("android.view.MiuiWindowManager$LayoutParams");
- Field field = layoutParams.getField("EXTRA_FLAG_STATUS_BAR_DARK_MODE");
- darkModeFlag = field.getInt(layoutParams);
- // val extraFlagField = clazz.getMethod("setExtraFlags", Int::class.javaPrimitiveType, Int::class.javaPrimitiveType)
- // extraFlagField.invoke(window, if (lightStatusBar) darkModeFlag else 0, darkModeFlag)
- Method extraFlagField = clazz.getMethod("setExtraFlags", int.class, int.class);
- extraFlagField.invoke(window,lightStatusBar?darkModeFlag :0,darkModeFlag);
- } catch (Exception ignored) {
- ignored.printStackTrace();
- }
- }
- }
|