我已经尝试解决了几个小时,我非常沮丧,所以我来找你们寻求指导。
我正在尝试保存和检索我创建的用户对象。我想要这样做,以便可以从整个应用程序的任何意图中保存和检索此User对象,因此我决定使用FileInput和Output流。我在下面都包含了我的代码。
这是我的输出数据方法:
public static void serializeDataOut(User ish) {
try {
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
File newFile = new File(path + "myFile.ser");
FileOutputStream fos = new FileOutputStream(newFile);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(ish);
oos.flush();
oos.close();
} catch (IOException e) {
e.printStackTrace();
}
}
这是我的输入数据方法:
public static User serializeDataIn(){
try{
String path = Environment.getExternalStorageDirectory().getAbsolutePath();
FileInputStream fin = new FileInputStream(path + "myFile.ser");
ObjectInputStream ois = new ObjectInputStream(fin);
User iUser = (User) ois.readObject();
ois.close();
return iUser;
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
return null;
}
}
注意:这两个方法都位于我的User类中,该类也实现了Serializable。
文件路径的整个错误看起来是这样的:java.io.FileNotFoundException: /storage/emulated/0myFile.ser (Permission denied)
它出现在这一行:FileOutputStream fos = new FileOutputStream(newFile);
当我从另一个意图调用它时,如下所示:User.serializeDataOut(addingUser);
其中addingUser是有效的User对象。
在异常日志中看到(权限被拒绝)后,我要做的第一件事是进入清单并检查是否允许我的应用程序读写存储,实际上我确实这样做了。我的权限如下:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
然后我读到一些人,如果他们有错误的路径,更确切地说不包括绝对路径,就会遇到此错误,然后我编辑了代码以包含该Environment.getExternalStorageDirectory().getAbsolutePath();
部分,我确信我使用的是正确的。
我还确保,因为我正在模拟器上进行测试,所以我启用了SD卡,并且模拟器具有SD文件夹。我检查了一下,确实确实有一个SD卡文件夹,并且我还在S8上测试了此应用程序,但遇到了同样的错误。
我到底在做什么错?我要做的只是保存一个User对象,然后在其他地方检索它,对于以前的文件被覆盖并且一次只保存一个User的情况,我完全可以。
我可能还注意到了一些与之相关的事情:大约每3-5秒在我的Android监视器中,即使我杀死了我的应用程序,错误仍然不断弹出。错误看起来像这样:onFatalError, processing error from engine(4) com.google.android.apps.gsa.shared.speech.a.g: Error reading from input stream
尽管我只能假定这不是问题的根源,但我只是想将其添加进来,以防万一。谢谢
您已在清单中添加了权限,因此我确定您不是在询问运行时权限。如果您使用的是SDK 23或更高版本,请询问运行时权限。供参考,我在这里添加一些代码段:
if(Build.VERSION.SDK_INT>22){
requestPermissions(new String[] {YOUR_PERMISSIONS AS STRING}, 1);
}
并检查是否授予许可,您需要使用onRequestPermissionResults()
方法。
@Override
public void onRequestPermissionsResult(int requestCode,
String permissions[], int[] grantResults) {
switch (requestCode) {
case 1: {
if (!(grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED)) {
Toast.makeText(addAlarm.this, "Permission denied to access your location.", Toast.LENGTH_SHORT).show();
}
}
}
}
问题内容: 我正在尝试使用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
我添加了使用权限,包括WRITE_EXTERNAL_STORAGE,android.permission.相机,READ_EXTERNAL_STORAGEAndroidManifest.xml. 当我在Nexus6(API 24)中运行我的应用程序时,它向我抛出了以下错误: java.io.IOException:权限被拒绝 这是我的代码: 如何在权限相机运行时打开之前使用它?
我创建了一个带有两个活动的android应用程序,即MainActivity和DBConfig activity。我有文本输入和一个按钮来保存和读取dbconfig中不同文件上的数据。下面是示例代码: 无法使用ReadDataRedentials读取从主活动中的DBconfig创建的文件数据: 我得到以下错误: 我需要帮助从MainActivity中的文件中读取数据。
同时运行docker的服务 YML文件: DockerFile: 来自rabbitmq:3-management-alpine 抄袭/配置/ampq/devhost 我使用了这个命令:docker-compose-fdocker-compose.yml--build ampq 请帮我解决这个问题