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