作者热门文章
- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我想让我的应用程序从 Android 的图库中挑选一张图片并将其上传到服务器上。代码在 API lenel 22 上运行良好,即 Lollipop 。但是 在 API 级别 23 上因 NullPointerException 而失败。 API 23之后有什么变化吗?如果有,那是什么。
这是我使用的代码。
public void onClickAddProfileImage(View v) {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("image/*");
startActivityForResult(intent, PICK_PROFILE_PHOTO);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_PROFILE_PHOTO && resultCode == Activity.RESULT_OK) {
uploader.setVisibility(View.VISIBLE);
Uri selectedImage = data.getData();
String[] projection = {MediaStore.Images.Media.DATA};
CursorLoader loader = new CursorLoader(this, selectedImage, projection, null, null, null);
Cursor cursor = loader.loadInBackground();
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
Uri imageUri = Uri.parse(cursor.getString(column_index));
cursor.close();
Intent in = new Intent();
UploadFile file_upload = new UploadFile(this, in);
file_upload.execute();
}
}
还有我上线的错误日志
Uri imageUri = Uri.parse(cursor.getString(column_index));
是
Process: com.webkul.taskapp, PID: 2648 java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:205520 flg=0x1 }} to activity {com.webkul.taskapp/com.webkul.taskapp.BaseActivity}: java.lang.NullPointerException: uriString
at android.app.ActivityThread.deliverResults(ActivityThread.java:3720)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: java.lang.NullPointerException: uriString
at android.net.Uri$StringUri.<init>(Uri.java:475)
at android.net.Uri$StringUri.<init>(Uri.java)
at android.net.Uri.parse(Uri.java:437)
at com.webkul.taskapp.BaseActivity.onActivityResult(BaseActivity.java:535)
at android.app.Activity.dispatchActivityResult(Activity.java:6442)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3716)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:3763)
at android.app.ActivityThread.-wrap16(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1403)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5443)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
请任何人提出解决问题的建议。
最佳答案
使用大量代码,您试图从……一个 Uri 构造一个 Uri。
data.geData()
已经是 Uri,您可以使用它打开 InputStream
以上传文件。
关于android - 从android Api 23及以上版本上传图片到服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38930630/
我有以下正则表达式 /[a-zA-Z0-9_-]/ 当字符串只包含从 a 到z 大小写、数字、_ 和 -。 我的代码有什么问题? 能否请您向我提供一个简短的解释和有关如何修复它的代码示例? //var
我是一名优秀的程序员,十分优秀!