下载PDF从URL保存到手机本地存储的Android应用可以通过以下步骤实现:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
public void downloadPDF(String url, String fileName) {
try {
URL downloadUrl = new URL(url);
HttpURLConnection connection = (HttpURLConnection) downloadUrl.openConnection();
connection.setRequestMethod("GET");
connection.connect();
// 创建文件对象
File file = new File(Environment.getExternalStorageDirectory(), fileName);
// 创建文件输出流
FileOutputStream outputStream = new FileOutputStream(file);
// 读取数据并写入文件
InputStream inputStream = connection.getInputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = inputStream.read(buffer)) != -1) {
outputStream.write(buffer, 0, len);
}
// 关闭流
outputStream.close();
inputStream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
String pdfUrl = "https://example.com/example.pdf";
String fileName = "example.pdf";
downloadPDF(pdfUrl, fileName);
private static final int REQUEST_CODE_WRITE_EXTERNAL_STORAGE = 1;
// 检查并请求文件写入权限
private void checkWritePermission() {
if (ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
REQUEST_CODE_WRITE_EXTERNAL_STORAGE);
} else {
// 已经拥有权限,可以进行下载操作
downloadPDF(pdfUrl, fileName);
}
}
// 处理权限请求结果
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions,
@NonNull int[] grantResults) {
if (requestCode == REQUEST_CODE_WRITE_EXTERNAL_STORAGE) {
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// 用户授予了文件写入权限,可以进行下载操作
downloadPDF(pdfUrl, fileName);
} else {
// 用户拒绝了文件写入权限,可以给出相应的提示
Toast.makeText(this, "需要文件写入权限才能下载PDF文件", Toast.LENGTH_SHORT).show();
}
}
}
这样,当用户点击下载按钮时,应用将请求文件写入权限并下载保存PDF文件到本地存储。
对于这个问题,腾讯云没有特定的产品与之相关,因此无法提供相关产品和链接地址。
领取专属 10元无门槛券
手把手带您无忧上云