Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android中的电话簿以及从中获取任何信息的问题_Java_Android_Android Studio_Directory - Fatal编程技术网

Java Android中的电话簿以及从中获取任何信息的问题

Java Android中的电话簿以及从中获取任何信息的问题,java,android,android-studio,directory,Java,Android,Android Studio,Directory,嗨,我的社区! 首先,我想说我是编程新手。最近,我试图通过我的应用程序从我的电话簿中获取照片。这似乎很难做到,因为我只成功地显示了我的相机目录,但没有例如下载或截图。非常奇怪的是,Android Studio无法解析行directories.add(filepath.DOWNLOAD)中的下载字 我的代码有什么问题???或者是因为我缺乏经验。。。 我的代码: 原因很简单。这是因为您尚未在filepath.class中定义变量DOWNLOAD。您也不应该像这样指向路径,而是使用以下一个或多个变量:

嗨,我的社区! 首先,我想说我是编程新手。最近,我试图通过我的应用程序从我的电话簿中获取照片。这似乎很难做到,因为我只成功地显示了我的相机目录,但没有例如下载或截图。非常奇怪的是,Android Studio无法解析行
directories.add(filepath.DOWNLOAD)中的下载字
我的代码有什么问题???或者是因为我缺乏经验。。。
我的代码:


原因很简单。这是因为您尚未在
filepath.class
中定义变量
DOWNLOAD
。您也不应该像这样指向路径,而是使用以下一个或多个变量:

Environment.getDataDirectory()
Environment.getDownloadCacheDirectory()
Environment.getExternalStorageDirectory()
Environment.getRootDirectory()
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS)
Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES)
因此,您的文件路径应该如下所示:

public class FilePaths {

    //"storage/emulated/0"
    public String ROOT_DIR = Environment.getExternalStorageDirectory().getPath();

    public String DOWNLOADS = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
    public String PICTURES = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
    public String CAMERA = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM);

    public String ALARMS = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_ALARMS);
    public String DOCUMENTS = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS);
    public String MOVIES = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MOVIES);
    public String MUSIC = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC);
    public String NOTIFICATIONS = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_NOTIFICATIONS);
    public String PODCASTS = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PODCASTS);
    public String RINGTONES = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_RINGTONES);

    public String FIREBASE_IMAGE_STORAGE = "photos/users/";

}

一般来说,为自己的类使用类似于java类的类名不是一个好主意!调用类
文件路径将导致混淆

将类的名称更改为
myfilepath
(或其他!)

然后可以将java文件设置为“myfilepath.java”。将类
公开
,并将变量
设为静态最终变量

public class MyFilePaths {

//"storage/emulated/0"
public static final String ROOT_DIR = Environment.getExternalStorageDirectory().getPath();

public static final String PICTURES = ROOT_DIR + "/Pictures";
public static final String CAMERA = ROOT_DIR + "/DCIM/camera";

public static final String FIREBASE_IMAGE_STORAGE = "photos/users/";

}
现在您可以执行以下操作:

directories.add(MyFilePaths.CAMERA);
编辑

在代码中调用:

FilePaths filePaths = new FilePaths();

但是您的
文件路径
类没有公共构造函数。

好吧,发布类文件路径的源代码,因为它不是Android framework的官方类。我刚才做了:)您使用的代码不起作用,因为您使用的
文件路径
的方式与您的类不一致。看看我的答案会有帮助。但是我应该把这些变量放在哪里呢?在哪个班级等@pozeraczsliokow::你有机会看我的解释吗?
directories.add(MyFilePaths.CAMERA);
FilePaths filePaths = new FilePaths();