我需要帮助才能在Android模拟器中保存文件...我已经添加了
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera" android:required="true" />
AndroidManifest.xml中的
我的保存文件代码:
if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
Bitmap imageBitmap = (Bitmap) extras.get("data");
imageView.setImageBitmap(imageBitmap);
}
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/Img");
myDir.mkdirs();
long n = System.currentTimeMillis();
String fname = "IMG_" + n + ".jpeg";
file = new File(myDir, fname);
if (file.exists())
file.delete();
try {
FileOutputStream out2 = new FileOutputStream(file);// here fire exception
imageBitmap.compress(Bitmap.CompressFormat.JPEG, 90, out2);
out2.flush();
out2.close();
} catch (Exception e) {
e.printStackTrace();
}
}
AndroidManifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.denis.calculator">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".InfoActivity"></activity><!-- ATTENTION: This was auto-generated to add Google Play services to your project for
App Indexing. See https://g.co/AppIndexing/AndroidStudio for more information. -->
<meta-data
android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version" />
</application>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-feature android:name="android.hardware.camera" android:required="true" />
有什么想法吗?
答案 0 :(得分:1)
替换以下行
String root = Environment.getExternalStorageDirectory().toString();
File myDir = new File(root + "/Img");
使用
File myDir = new File(Environment.getExternalStorageDirectory(),"Img");
同时从代码中删除以下行
if (file.exists())
file.delete();
因为您定义文件名的方式永远不会有相同的文件名。因此,验证文件的存在与此无关。
如果您的应用将用于Android 6.0或更高版本,您还必须向用户提出书面许可。有关详细信息,请参阅以下链接:
https://developer.android.com/training/permissions/requesting.html
您可以使用我最近创建此存储库的库中定义的解决方案,包括Permission演示。
https://github.com/eeshan-jamal/DroidLibX
我稍后会通过Maven提供它,但是现在你必须在项目中导入droidlibx库模块。
答案 1 :(得分:0)
解决方案从Nougat降级为KitKat!谢谢你的建议