Android:无法获取从DIRECTORY_DCIM获取的目录下的目录列表

时间:2017-06-10 21:26:23

标签: android camera

专家!

这是我在这里的第一个问题,我是Android应用程序开发的初学者,所以请原谅我,如果我的问题似乎是徒劳的。我正在开发我的Android应用程序,其中我试图获取Android手机的默认相机应用程序拍摄的照片数量。为此,我编写了以下代码。此代码在我的具有OS 4.x的Android设备上运行良好,而相同的代码在我的具有OS 6.x和7.x的Android设备上不起作用。

我的代码:

package com.local.cameraphotos;

import android.os.Environment;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle; 
import android.util.Log;

import java.io.File;

public class MainActivity extends AppCompatActivity {

   public void get_no_of_pictures(File directory){

      int picture_count = 0;
      int video_count = 0;

      Log.e("Camera", "Going to get files in directory:" + directory);

      if(directory != null) {

         File[] files = directory.listFiles();
         if(files != null) {
            for (File CurFile : files) {
               if (CurFile.isDirectory()) {

                  if(CurFile.getName().equals("100MEDIA")) {
                     Log.e("Camera", "Directory name:" + CurFile.getName());
                     get_no_of_pictures(CurFile);
                  }else if (CurFile.getName().equals("Camera")) {
                     Log.e("Camera", "Directory name:" + CurFile.getName());
                     get_no_of_pictures(CurFile);
                  }
               }else if (CurFile.isFile()){

                  if(CurFile.getName().endsWith(".jpg"))
                     picture_count++;
                  else if(CurFile.getName().endsWith(".mp4"))
                     video_count++;
               }

            }
            Log.e("Camera", "Total number of pictures:" + picture_count);
            Log.e("Camera", "Total number of videos:" + video_count);
        }else{
            Log.e("Camera", "Unable to get list of files from CameraDirectory");
        }
    }
}

@Override
protected void onCreate(Bundle savedInstanceState){
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_main);

   File CameraDirectory = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM).getAbsolutePath());
   get_no_of_pictures(CameraDirectory);

   finish();
}

当我的代码尝试使用directory.listFiles()列出文件然后它在Android 7.x和6.x上返回null但在Android 4.x上返回有效值时会出现问题。

My Manifest如下所示

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.local.cameraphotos">

   <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"
                 android:maxSdkVersion="25"/>
   <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"
                 android:maxSdkVersion="25"/>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

我非常感谢任何有关这方面的帮助,因为我已经在这个论坛上搜索了关于在Android文件系统上的目录下获取文件的链接,但我没有遇到过这样的情况。

先谢谢。

1 个答案:

答案 0 :(得分:0)

你真的获得了许可吗?因为您的请求并不意味着您被授予了权限,特别是在版本&gt;中L.查找如何处理运行时权限并请求这些权限。