我一直在尝试加密文件,并将这些文件写回到同一位置。但是我收到错误消息说"java.io.FileNotFoundException: /storage/emulated/0/New file.txt: open failed: EACCES (Permission denied)".
我的Manifest
档案是这个
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tdk.mytestapplication2">
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:allowBackup="true"
我认为我已经提供了正确的许可。我用来加密文件的代码就是这个。
public static void encrypt(SecretKey secretKey, String filePath){
try {
// Here you read the cleartext.
FileInputStream fis = new FileInputStream(filePath);
// This stream write the encrypted text. This stream will be wrapped by another stream.
FileOutputStream fos = new FileOutputStream(filePath);
// Create cipher
Cipher cipher = Cipher.getInstance("AES");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
// Wrap the output stream
CipherOutputStream cos = new CipherOutputStream(fos, cipher);
// Write bytes
int b;
byte[] d = new byte[8];
while ((b = fis.read(d)) != -1) {
cos.write(d, 0, b);
}
// Flush and close streams.
cos.flush();
cos.close();
fis.close();
}catch(IOException e){
e.printStackTrace();
}catch (NoSuchAlgorithmException e){
e.printStackTrace();
}catch(NoSuchPaddingException e){
e.printStackTrace();
}catch(InvalidKeyException e){
e.printStackTrace();
}
}
我在按钮内使用了这种方法
Button btnEncrypt = (Button) findViewById(R.id.btnEnc);
btnEncrypt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
aesKey = EncAndDec.generateKey();
String filePath = editText.getText().toString();
//Generating the file hash
String md5Hash = MD5Hash.getMD5(filePath);
System.out.println(aesKey.toString());
System.out.println(filePath);
System.out.println(md5Hash);
//Encrypting the file
for(int i=1; i<100; i++) {
EncAndDec.encrypt(aesKey, filePath);
}
}
});
仍然我无法配置此错误。请有人帮忙!
我怀疑您运行的是Android 6.0棉花糖(API 23)或更高版本。在这种情况下, 必须先
实现运行时权限,然后才能尝试读取/写入外部存储。
问题内容: 我正在尝试使用android中的异步任务下载和存储图像,当单击下载按钮时出现以下错误。 WallpaperActivity.java Android目标Api 7.1.1 清单中添加的权限 android.permission.READ_EXTERNAL_STORAGE android.permission.WRITE_EXTERNAL_STORAGE 问题答案: 您需要为OS Mar
我正试图在android中使用异步任务下载和存储图像,当点击下载按钮时得到以下错误。 null Android.permission.write_external_storage
我正在尝试一个非常基本的相机应用程序的源代码在Android Studio 3.4.1与Android虚拟设备(AVD)Nexus 7(2012)API 29.我用模拟器中的相机拍了一张照片,并试图将其保存为 /storage/emulated/0/Pictures/myPic.png,但 /storage/emulated/0/Pictures/myPic.png打开失败:EACCES(拒绝许可
并且在清单中权限集是正确的
更新 结果发现我调用open和close FileOutputStream的频率太高了,这会在某个时候抛出FileNotFoundException。听起来更像是线程问题。
以下代码包括从服务器下载文件并将其保存在存储中,当设备有内部存储时,该代码可以正常工作。 但当我尝试使用没有内部存储的设备时,只使用外部存储时,我得到以下异常。 有什么建议吗?原因是什么?顺便提一下,Environment.getExternalStorageDirectory()返回/mnt/sdcard/,file.mkdir()返回false。