我有一个使用外部存储来存储照片的应用程序.根据需要,在其清单中,请求以下权限
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)
它使用以下内容来检索所需的目录
File sdDir = Environment
.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
SimpleDateFormat dateFormat = new SimpleDateFormat("MM-dd", Locale.US);
String date = dateFormat.format(new Date());
storageDir = new File(sdDir, getResources().getString(
R.string.storagedir)
+ "-" + date);
// Create directory, error handling
if (!storageDir.exists() && !storageDir.mkdirs()) {
... fails here
Run Code Online (Sandbox Code Playgroud)
该应用程序适用于Android 5.1至2.3; 它已在Google Play上播放了一年多.
在将我的一个测试手机(Android One)升级到6之后,它现在在尝试创建必需目录时返回错误,"/ sdcard/Pictures/myapp-yy-mm".
SD卡配置为"便携式存储".我已经格式化了SD卡.我已经取代了它.我重新启动了.一切都无济于事.
此外,内置的Android屏幕截图功能(通过电源+低音量)失败"由于存储空间有限,或者应用程序或您的组织不允许".
有任何想法吗?
我正在使用带有 NDK-Build 的 Android Studio,它不显示单个 C++ 文件,因此我无法调试。它只显示一个 cpp-Folder 并在 ethe 文件夹中显示一些静态库,我无法进一步介入。我记得曾经可以进入这些库(它们像文件夹一样打开)并查看单个 cpp 文件。
这是我的 build.gradle 文件:
import java.util.regex.Pattern
import com.android.build.OutputFile
import org.apache.tools.ant.taskdefs.condition.Os
apply plugin: 'com.android.application'
apply plugin: 'io.fabric'
task('increaseVersionCode') << {
def buildFile = file("build.gradle")
def pattern = Pattern.compile("versionCode\\s+(\\d+)")
def manifestText = buildFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
def versionCode = Integer.parseInt(matcher.group(1))
def manifestContent = matcher.replaceAll("versionCode " + ++versionCode + "")
buildFile.write(manifestContent)
}
// DO NOT change the build.gradle on debug builds any longer, since this will lead to debugging …Run Code Online (Sandbox Code Playgroud)