2016-07-07 39 views
0

我对Android很新,我试图通过意图使用相机。我知道我的API23或更低的权限正在工作。我的应用程序成功打开相机,但是当我点击确定后,它不会返回到我的MainActivity。我在网上发现,原因是因为我的代码无法为图片创建文件。所以我能够缩小到mkdirs()。这个函数总是返回false。我已经尝试了一切,但仍然mkdirs总是返回false。我在文档中使用了完全相同的代码: https://developer.android.com/guide/topics/media/camera.html#saving-media 保存数据。mkdirs()不工作,相机不返回到我的MainActivity

这里是我的代码:

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 - 我也曾尝试: 尝试{ 如果(!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天的时间没有任何运气。我非常感谢任何意见。非常感谢你!

+0

愚蠢的我。我对自己非常不满。在花了几天的时间看后,写了这篇文章之后。答案完全不同的话题。对于将来遇到同样问题的人来说,问题在于您的权限:如果您的模拟器API23或更高版本,则您的相机权限应为:而不是 Antuan

+0

'photosDirectory.mkdirs();'。您不应该执行两次该声明。只有当目录不存在时。 – greenapps

回答

0

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

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

我应该用应该使用:

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