- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在编写一个测试程序,我想将我的一些测试结果序列化到一个文件中。我一直收到这个恼人的权限被拒绝异常。为了使事情变得更简单,我编写了一个小示例代码,但仍然收到相同的权限被拒绝警告。这是我的代码,我使用 getExternalStorageDirectory 获取/mnt/sdcard/目录:
private void writetry(){
try {
File sdCard = Environment.getExternalStorageDirectory();
Log.d("can write", String.valueOf(sdCard.canWrite()));
Log.d("ExternalStorageState", Environment.getExternalStorageState());
File file = new File(sdCard, "VisitedScreen.temp");
//file.createNewFile();
FileOutputStream f = new FileOutputStream(file);
byte[] buf = "Hello".getBytes();
f.write(buf);
f.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这是 logcat 打印出来的内容:
07-12 12:28:47.288: D/can write(253): false
07-12 12:28:47.288: D/ExternalStorageState(253): mounted
07-12 12:28:47.297: W/System.err(253): java.io.FileNotFoundException: /sdcard/VisitedScreen.temp
07-12 12:28:47.437: W/System.err(253): at org.apache.harmony.luni.platform.OSFileSystem.open(OSFileSystem.java:244)
07-12 12:28:47.437: W/System.err(253): at java.io.FileOutputStream.<init>(FileOutputStream.java:97)
07-12 12:28:47.437: W/System.err(253): at java.io.FileOutputStream.<init>(FileOutputStream.java:69)
我将我的 Junit 测试 list 文件声明为:(实际上这是设置权限的错误位置)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="net.mandaria.tippytipper.test"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="7" />
<instrumentation
android:name="android.test.InstrumentationTestRunner"
android:targetPackage="net.mandaria.tippytipper" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<uses-library android:name="android.test.runner" />
</application>
</manifest>
欢迎任何建议!
补充:我将相同的代码复制到一个普通的 android 程序,它可以工作,并且 sdCard.canWrite() 返回 true。但在 Android Junit 测试项目中它不起作用。谁知道为什么??
问题已解决:感谢所有回复的人。这是因为我没有添加原始Android程序。我还注意到我不需要为 Junit 测试项目添加任何权限。很有意思的是,写 Action 发生在测试项目中,但在原项目中需要权限。我想知道如果我对 .apk 文件进行黑盒测试会怎样。我不能从字节码更改权限吗?
最佳答案
使用权限
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
应该添加到您的主项目的 list 中。请记住,测试与主应用程序在同一进程中运行。
关于Android 测试 : The storage state is mounted, WRITE_EXTERNAL_STORAGE 权限已声明,但仍然无法写入模拟器的 sdcard,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11459401/
当拥有 WRITE_EXTERNAL_STORAGE 权限时,我希望有权写入整个文件系统(例如 /sdcard、/storage/emulated/0 ,/storage/sdcard0,/mnt/s
我正在将我的 Android 应用程序的目标 SDK 版本升级到 23 (Android M),它具有新的运行时权限 (https://developer.android.com/training/p
我想要的只是能够在一个非常特定的文件夹(与我的应用程序相关)中为我的应用程序编写日志/异常报告,以便了解失败和异常,所以这是我正在使用的代码: File logFile = new File(Envi
正在关注 this discussion ,我已经签署了一个系统应用程序,我正在使用从制造商那里收到的特定设备的专有平台证书。我签名如下: java -jar out/host/linux-x86/f
据我所知,要将声音设置为铃声,应将其插入 MediaStore。在 MediaStore 中写入,需要 WRITE_EXTERNAL_STORAGE 权限。但是...有没有办法在不需要 WRITE_E
下面的代码输出是“Write granted”,但之后出现错误 '/storage/emulated/0/Download/test.txt: open failed: EACCES (Permiss
是否可以在不添加任何权限的情况下共享自己的应用程序屏幕截图? 这是我的其他应用程序代码,用于复制到缓存和共享 public void sendFile(File paramFile) {
我开始将 HERE Android Starter SDK 集成到我的应用程序中。根据文档(和运行时错误),初始化 MapEngine 需要权限 WRITE_EXTERNAL_STORAGE: Map
我有使用的应用程序 它在 Android 6.0 上自动授予,但我可以在设置中撤销它。想要检查它是否被授予以防用户撤销它,所以我这样做: int permissionCheck = ContextC
如 documentation 中所述,从 API 级别 19 开始,WRITE_EXTERNAL_STORAGE 权限不应该是必需的。因此,我已将其写入 list : 但是,当我运行使用 Goog
有没有一种方法可以使用 Intent.ACTION_SEND 来共享屏幕截图而不需要 android.permission.WRITE_EXTERNAL_STORAGE? 分享部分如下: In
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个 android 应用程序需要以下权限才能运行。 ACCESS_FINE_LOCATION、ACCESS_WIFI_STATE、WRITE_EXTERNAL_STORAGE、RECORD_AU
安卓 6 我编写了下一个检查权限的代码,如果没有这样的权限,它会要求用户提供它们。 private void checkDiskPermission () { if (ActivityComp
我目前使用此方法有效地将图像文件转换为内容 uri... protected static Uri convertFileToContentUri(Context context, File file
我正在使用下载管理器下载文件并将其保存到外部存储,如下所示: DownloadManager.Request req = new DownloadManager.Request(uri); req.s
在 android 6 或更高版本中,当用户第一次打开应用时询问他一些权限如果他不允许则退出应用程序 我的应用程序必须有一些权限是读取和写入外部存储,如何实现这一点 我试过了 if (Build.VE
声明就够了吗?还是我也必须声明 ? Javadocs 省略了这一重要信息。 最佳答案 最好是显式地声明这两个权限,但仅声明 android.permission.WRITE_EXTERNAL_STOR
我使用 DownloadManager 下载照片并将其保存到外部图片目录: .setDestinationInExternalPublicDir(Environment.DIRECTORY_PICTU
AS 中有一个关于 android.permission.WRITE_EXTERNAL_STORAGE 的 lint 警告.警告说,当面向 Android 10 及更高版本时,该权限将不再提供写入权限
我是一名优秀的程序员,十分优秀!