Articles of android externalstorage

存储访问框架在testing应用程序

我正在使用Intent.ACTION_OPEN_DOCUMENT_TREE授予我的应用程序写入访问外部存储(在棒棒糖和棉花糖)。 但是我想在testing应用程序中写入外部存储器。 Intent.ACTION_OPEN_DOCUMENT_TREE使用系统对话框,因此我无法在testing期间授予权限。 我也试图在应用程序中允许它,然后在testing中使用它,但它不是共享的 – 应用程序项目和testing项目是不同的包。 是否有人知道一些解决方法,例如可能允许整个外部存储器的testing目的? 也许通过改变一些系统属性? adb shell setprop SOMEPROPERTY 1

在Android中将文件写入外部存储失败

正如标题所指出的,我无法将文件写入外部存储。 我的debugging设备是Nexus 5.问题是,我能够从设备上完美地读取文件(我一直在使用下载文件夹中的文件),但无法写入它们。 我知道,当设备没有连接到电脑时,我必须这样做。 但是它也不起作用。 实际上,我已经尝试过在读取SD卡的状态之前(当然不行)。 当设备连接到我的电脑时,状态显示为“已安装”。 而且我将状态与Environment.MEDIA_MOUNTED_READ_ONLY和Environment.MEDIA_MOUNTED没有任何成功。 我的设备不属于这些状态。 有一件事你必须知道的是我的手机没有外置SD卡,因为它是一个内置的。 这导致我的设备有一个用于外部存储的“/ storage / emulated / 0 / …”目录。 我还必须指出,我已经在Android Manifest中实现了以下标签: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="ANDROID.PERMISSION.WRITE_EXTERNAL_STORAGE"/> 我不知道会发生什么。 另一个可能的帮助是我已经尝试用winrar(Android)pipe理文件,我已经能够删除连接到我的电脑的设备的文件,而没有连接。 所以我不知道该怎么做。 我用来编写文件的代码如下。 请记住,它应该读取一个图像文件(它所做的),将其转换为string,将其转换回图像,然后将其保存到下载文件夹: File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS).getAbsolutePath() + "/base_image.jpg"); // Reading a Image file from file system FileInputStream imageInFile = new FileInputStream(file); byte imageData[] = new byte[(int) file.length()]; […]

Android – 相机权限被拒绝而不提示

我遇到了请求权限后面的手动过程的问题(只是不停地落入“被拒绝”的代码),所以我转而使用Dexter来简化。 我在onCreate()中实现了下面的代码,我做了一个全新的应用程序安装: Dexter.withActivity(this) .withPermission(Manifest.permission.CAMERA) .withListener(new PermissionListener() { @Override public void onPermissionGranted(PermissionGrantedResponse response) { Log.d(TAG, "GRANTED!"); initCamera(); } @Override public void onPermissionDenied(PermissionDeniedResponse response) { Log.d(TAG, "DENIED!"); } @Override public void onPermissionRationaleShouldBeShown(PermissionRequest permission, PermissionToken token) { Log.d(TAG, "PERMISSION RATIONAL SHOULD BE SHOWN!"); } }).check(); 它立即陷入“被拒绝!” 日志,它甚至从来没有提示我。 我试过这个特定的代码来尝试多个权限(这是我最终需要做的): Dexter.withActivity(activity) .withPermissions(Manifest.permission.CAMERA, Manifest.permission.RECORD_AUDIO, Manifest.permission.READ_EXTERNAL_STORAGE, Manifest.permission.WRITE_EXTERNAL_STORAGE) .withListener(new MultiplePermissionsListener() { @Override public […]

如何获得一个外部存储SD卡的大小(与安装的SD卡)?

链接:我基于这个链接工作 我添加了这一行来查找大小(内部和外部)大小, return availableExternalMemorySize/(1024*1024); 我在我的平板电脑上testing。 我得到内部和外部的SD卡大小, 在内部存储器中,1)总内存 – 1007 2)可用内存–683 在外部存储器中,1)总内存 – 1763 2)可用内存 – 1554 但在平板电脑上,我看到设置。一个外部存储大小有8GB。 但是,当我通过编程testing时,它显示了1.7 GB左右。 什么是find外部存储大小的过程? 请有人build议/帮助我? 谢谢 !

如何检查外部存储空间的可用性?

如何检查SD卡是否已满,以便您的应用程序可以决定是否可以继续执行其工作,即写入外部存储器或通知用户存储空间不足。

Android:外部存储上的mkdirs()/ mkdir()返回false

我被这个疯狂的驱使着: Log.d("STATE", Environment.getExternalStorageState()); File f = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM), "work_data"); Log.d("PATH", f.getAbsolutePath()); if (!f.exists()) { Log.d("MAKE DIR", f.mkdirs() + ""); } 输出日志如下所示: STATE mounted PATH /mnt/sdcard/DCIM/work_data MAKE DIR false 我确保添加正确的权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 但我不知道为什么它不能创build文件夹。 我也一步一步使用mkdir() ,但结果是一样的。 请帮帮我。 我search了这么多,花了至less2天在这个愚蠢的事情。 谢谢你的帮助!! 编辑: 对不起大家! 我在<application>标签中添加了<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 。 这是我的错误! 不过谢谢大家的回复。

SecurityException:权限拒绝:读取(仅在模拟器上)

我在我的应用程序中有两个活动,MainActivity调用ImagePicker,它具有一个GridView,用于放置手机库中的所有图像,我使用ContentResolver获取游标。 当我testing它时,它在我的手机上正常工作,但是每次都在仿真器上立即崩溃。 这里是错误日志: java.lang.SecurityException:Permission Denial:阅读com.android.providers.media.MediaProvider uri content:// media / external / images / media从pid = 5934,uid = 10060需要android.permission.READ_EXTERNAL_STORAGE或者grantUriPermission() 我有清单写入权限,如下所示: <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme"> <activity android:name=".MainActivity" android:label="@string/app_name" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ImagePicker" /> </application>

如何在Android应用程序的在线和离线模式下加载或检索网页?

我需要加载和检索Android设备的内部或外部内存的HTML网页。 我需要的是在Android下载和检索网页使用networking视图。 有很多类似于下载或保存网页的重复问题。 但没有任何答案帮助我。 引导我! 提前致谢。

为什么我没有权限在外部存储上写入应用程序目录?

TL; DR问题总结:我的Android应用程序尝试写入应用程序的SD卡上的外部存储目录 。 它失败,并具有权限错误 。 但是,提取到一个最小的testing应用程序相同的代码(方法),成功! 由于我们的目标API级别包括KitKat及更高版本(以及JellyBean),并且KitKat限制了应用程序在除应用程序的指定外部存储目录之外的SD卡上的任何地方写入,所以该应用程序尝试写入指定的目录/path/to/sdcard/Android/data/com.example.myapp/files 。 我通过从Activity.getExternalFilesDirs(null);获取目录列表来validation这个目录的pathActivity.getExternalFilesDirs(null); find一个是可isRemovable() 。 也就是说,我们不是硬编码到SD卡的path,因为它因制造商和设备而异。 这里是演示问题的代码: // Attempt to create a test file in dir. private void testCreateFile(File dir) { Log.d(TAG, ">> Testing dir " + dir.getAbsolutePath()); if (!checkDir(dir)) { return; } // Now actually try to create a file in this dir. File f = new File(dir, […]

如何使用adb将文件复制到可从PC访问的android目录

如果你将android设备附加到PC上,你可以浏览文件和目录。 使用Environment.getExternalStorage()可以获得这个目录。 您可以在应用程序中使用它并创build可访问的文件和目录。 它工作正常。 在我的设备上这个path看起来像/storage/emulated/0 ,如果我尝试adb push到这个目录我会得到访问被拒绝的错误。 是否有可能使用adb将文件复制到Windows资源pipe理器所在的文件夹? D:\…\tools>adb push ACCOUNTS.DB /storage/emulated/0 failed to copy 'ACCOUNTS.DB' to '/storage/emulated/0': Permission denied 58969 KB/s (606505 bytes in 0.010s) 我正在实现自动化的导入/导出,并且我希望在没有adb shell的情况下可以访问文件,以防万一出错。 目前使用variables$EXTERNAL_STORAGE作为解决方法,它适用于adb和应用程序。 设备:华硕Fonepad 7,Android 5.0,尝试Genymotion定制平板电脑6.0 – 工程。