0

我对Android相当陌生,我正在尝试通过意图使用相机。我知道我对 API23 或更低版本的权限有效。我的应用程序成功打开了相机,但是当我点击确定时,它并没有回到我的 MainActivity。我在网上找到原因是因为我的代码无法为图片创建文件。所以我能够将其缩小到 mkdirs()。此函数始终返回 false。我已经尝试了所有方法,但 mkdirs 总是返回 false。我在文档中遵循了完全相同的代码: https ://developer.android.com/guide/topics/media/camera.html#saving-media 在保存数据下。

这是我的代码:

private static File getOutputMediaFile(int type){

----- .... 我先做一些检查以确保 SD 卡已安装 ...-------- .....

    File photosDirectory; 
    photosDirectory = new File (Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES),"myPhotos");

    if(!photosDirectory.exists()) {

       boolean file_creation = photosDirectory.mkdirs();

        if(!photosDirectory.mkdirs()){
            //return null; --->> HERE IS WHERE IT FAILS
        }else{
            Log.d("MyCameraApp", "FILE CREATION SUCCEEDED ");
        }
    }

----- I have some extra code here, not relevant to the question  -----
}

我尝试过的事情:1-权限。我已经包括:

2-我也试过:try{ if(!photosDirectory.exists()) {

       boolean file_creation = photosDirectory.mkdirs();

        if(!photosDirectory.mkdirs()){
            //return null; --->> HERE IS WHERE IT FAILS
        }else{
            Log.d("MyCameraApp", "FILE CREATION SUCCEEDED ");
        }
    } catch(Exception e){ show message}

3-我也进入了应用程序并确保该应用程序具有 CAMERA 和 STORAGE 权限。

4-我尝试过调用相同代码的不同方法,但仍然如此。

我很绝望。这让我发疯了。我花了 4 天的时间来解决这个问题,但没有任何运气。我将非常感谢任何意见。非常感谢!

4

1 回答 1

1

这个问题与 mkdirs() 无关,但与我的权限有关。对于 API >=23 而不是使用:

<uses-feature android:name="android.hardware.CAMERA" />

我应该使用应该使用:

<uses-feature android:name="android.hardware.camera2"/>
于 2016-07-07T22:23:19.273 回答