Android File.listFiles()返回null问题
生活随笔
收集整理的這篇文章主要介紹了
Android File.listFiles()返回null问题
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
File.listFiles()返回null可能原因是沒讀取sdcard權限(READ_EXTERNAL_STORAGE?WRITE_EXTERNAL_STORAGE)。
system/private-app默認都有權限,system/app某些系統模式下初始化后沒權限,系統重啟后有權限,第三方app的權限大部分是詢問。
使用ContextCompat.checkSelfPermission檢查是否有權限,使用ActivityCompat.requestPermissions申請權限。
public class MainActivity extends AppCompatActivity {private final static String PATH = Environment.getExternalStorageDirectory().getPath();@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);if (isStoragePermissionGranted()) {File directory = new File(PATH);File[] files = directory.listFiles();Log.i("juno", PATH + "files : " + (files == null ? null : files.length));}}public boolean isStoragePermissionGranted() {if (Build.VERSION.SDK_INT >= 23) {final Context context = getApplicationContext();int readPermissionCheck = ContextCompat.checkSelfPermission(context,Manifest.permission.READ_EXTERNAL_STORAGE);int writePermissionCheck = ContextCompat.checkSelfPermission(context,Manifest.permission.WRITE_EXTERNAL_STORAGE);if (readPermissionCheck == PackageManager.PERMISSION_GRANTED && writePermissionCheck == PackageManager.PERMISSION_GRANTED) {Log.v("juno", "Permission is granted");return true;} else {Log.v("juno", "Permission is revoked");ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_EXTERNAL_STORAGE,Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);return false;}} else { //permission is automatically granted on sdk<23 upon installationLog.v("juno", "Permission is granted");return true;}}@Overridepublic void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {super.onRequestPermissionsResult(requestCode, permissions, grantResults);Log.v("juno","onRequestPermissionsResult requestCode : " + requestCode+ " Permission: " + permissions[0] + " was " + grantResults[0]+ " Permission: " + permissions[1] + " was " + grantResults[1]);if(grantResults[0]== PackageManager.PERMISSION_GRANTED){//resume tasks needing this permissionFile directory = new File(PATH);File[] files = directory.listFiles();Log.i("juno", "After PERMISSION_GRANTED files : " + (files == null ? null : files.length));}} }?
總結
以上是生活随笔為你收集整理的Android File.listFiles()返回null问题的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows7 64bit oracl
- 下一篇: android sina oauth2.