在KitKat之前(或在新Gallery之前)Intent.ACTION_GET_CONTENT返回这样的URI
内容://媒体/外部/图像/媒体/ 3951.
使用ContentResolver和quering
MediaStore.Images.Media.DATA返回文件URL.
但是在KitKat中,Gallery会返回一个URI(通过"Last"),如下所示:
内容://com.android.providers.media.documents/document/image:3951
我该如何处理?
android android-intent android-contentresolver android-gallery
我正在尝试从我的Android应用上传图片到Google云端硬盘,
基于本教程.
当我调试他们的示例项目时,我看到一个典型的fileUri =
file:///storage/sdcard0/Pictures/IMG_20131117_090231.jpg
在我的应用中,我想上传现有照片.
我检索它的路径
private void GetAnyImage()
{
File dir = new File(Environment.getExternalStorageDirectory()
.getAbsolutePath() + "/Pictures/Screenshots");
// --> /storage/sdcard0/Pictures/Screenshots
Log.d("File path ", dir.getPath());
String dirPath=dir.getAbsolutePath();
if(dir.exists() && dir.isDirectory()) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT, null);
intent.setType("image/*");
startActivityForResult(intent,REQUEST_ID);
}
}
Run Code Online (Sandbox Code Playgroud)
并最终得到这个典型的fileUri =content://media/external/images/media/74275
但是在运行这行代码时
private void saveFileToDrive() {
// progressDialog = ProgressDialog.show(this, "", "Loading...");
Thread t = new Thread(new Runnable() {
@Override
public void run() {
try {
// File's binary content
java.io.File fileContent = new …Run Code Online (Sandbox Code Playgroud) 我写了一个应用程序的大部分,最小API级别设置为7.我想从8级调用单个API.具有较低版本的android的用户将在没有这个"额外功能"的情况下生存.
目前我添加了@SuppressLint("NewApi")以便我的代码可以运行; 我在API 14上测试它.一切正常.
我想知道该应用程序在API 7设备上的行为.这一行会被忽略吗?我的应用会崩溃吗?该应用是否会被Google Play过滤,因此无法安装?
我想在较低的设备上忽略这一行.