html5读取sd卡,安卓截屏功能与加载sd卡的html

本文介绍了一个Android应用实例,该应用实现了从SD卡加载HTML文件到WebView,并提供了屏幕截图的功能。通过请求必要的权限,应用可以正确加载本地HTML内容,并允许用户捕获当前屏幕为图片。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

package cn.medua.loadhtml;

import android.Manifest;

import android.annotation.SuppressLint;

import android.app.Activity;

import android.content.Context;

import android.content.Intent;

import android.content.pm.PackageManager;

import android.content.res.Resources;

import android.graphics.Bitmap;

import android.graphics.PixelFormat;

import android.hardware.display.DisplayManager;

import android.hardware.display.VirtualDisplay;

import android.media.Image;

import android.media.ImageReader;

import android.media.projection.MediaProjection;

import android.media.projection.MediaProjectionManager;

import android.os.Build;

import android.os.Bundle;

import android.util.Log;

import android.view.View;

import android.webkit.WebSettings;

import android.webkit.WebView;

import android.widget.Button;

import android.widget.Toast;

import androidx.annotation.NonNull;

import androidx.appcompat.app.AppCompatActivity;

import androidx.core.app.ActivityCompat;

import androidx.core.content.ContextCompat;

import java.io.FileOutputStream;

import java.text.SimpleDateFormat;

import java.util.Date;

import java.util.Locale;

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private static final int PERMISSION_REQ_ID = 22;

private static final String[] REQUESTED_PERMISSIONS = {

Manifest.permission.READ_EXTERNAL_STORAGE,

Manifest.permission.WRITE_EXTERNAL_STORAGE

};

private WebView webView;

private Button butImg;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

initView();

if (checkSelfPermission(REQUESTED_PERMISSIONS[0], PERMISSION_REQ_ID) &&

checkSelfPermission(REQUESTED_PERMISSIONS[1], PERMISSION_REQ_ID)) {

setHtml();

}

}

//申请sd卡读写权限

private boolean checkSelfPermission(String permission, int requestCode) {

if (ContextCompat.checkSelfPermission(this, permission) !=

PackageManager.PERMISSION_GRANTED) {

ActivityCompat.requestPermissions(this, REQUESTED_PERMISSIONS, requestCode);

return false;

}

return true;

}

@Override

public void onRequestPermissionsResult(int requestCode,

@NonNull String[] permissions, @NonNull int[] grantResults) {

if (requestCode == PERMISSION_REQ_ID) {

if (grantResults[0] != PackageManager.PERMISSION_GRANTED ||

grantResults[1] != PackageManager.PERMISSION_GRANTED) {

Toast.makeText(MainActivity.this, "暂无权限!!!", Toast.LENGTH_SHORT).show();

return;

} else {

setHtml();

}

}

}

//加载sd卡里的html文件

private void initView() {

webView = (WebView) findViewById(R.id.webView);

WebSettings ws = webView.getSettings();

ws.setJavaScriptEnabled(true);

butImg = (Button) findViewById(R.id.butImg);

butImg.setOnClickListener(this);

}

private void setHtml() {

webView.loadUrl("file://" + "/storage/emulated/0/loadHtml/index.html");

}

@SuppressLint("WrongConstant")

@Override

public void onClick(View v) {

switch (v.getId()) {

case R.id.butImg:

createImage(v);

break;

}

}

//截屏功能实现

private void createImage(View v) {

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss", Locale.US);

String fname = "/sdcard/" + sdf.format(new Date()) + ".png";

View view = v.getRootView();

view.setDrawingCacheEnabled(true);

view.buildDrawingCache();

Bitmap bitmap = view.getDrawingCache();

if (bitmap != null) {

System.out.println("bitmap got!");

try {

FileOutputStream out = new FileOutputStream(fname);

bitmap.compress(Bitmap.CompressFormat.PNG, 100, out);

} catch (Exception e) {

e.printStackTrace();

}

}

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值