2017-06-10 65 views
0

夥計們!Android:無法獲取從DIRECTORY_DCIM獲取的目錄下的目錄列表

這是我的第一個問題,我是Android應用程序開發的初學者,所以請原諒我的問題,如果我的問題似乎徒勞無益。我正在開發我的Android應用程序,我試圖獲取Android手機的默認Camera應用程序拍攝的照片數量。爲此,我編寫了以下代碼。此代碼適用於安裝了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的上空文件,但返回在Android有效值出現的問題4.x版

我的清單看起來像下面

<?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

你真的授予了許可嗎?因爲僅僅因爲你要求它並不意味着你被授予權限,特別是在版本> L中。查找如何處理運行時權限並請求這些權限。 – JoxTraex

+0

嗨Jox! 感謝您的提示。在我檢查了授予的許可之後,我發現它不是。一旦我添加了一個檢查,並詢問用戶這個權限,然後它的工作。 – Pagar

+0

很高興聽到它的幫助。我發佈了這個答案。請隨時接受。 – JoxTraex

回答

0

你真的授予了許可嗎?因爲僅僅因爲你要求它並不意味着你被授予權限,特別是在版本> L中。查找如何處理運行時權限並請求這些權限。