我目前正在学习如何在java中使用android studio,并试图制作一个社交媒体应用程序。我目前正在创建一个编辑个人资料页面,用户可以在其中更新他们的详细信息并上传个人资料图片。
我一直在网上学习教程,我遇到的所有教程都使用starActivityForResult方法。它已经被划掉,不会调用该方法,因为它已被弃用。但是我不知道该用什么来代替。
`ProfileImage。setOnClickListener(新建视图。OnClickListener(){
@Override
公共无效onClick(视图视图){
//open gallery
Intent OpenGalleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(OpenGalleryIntent, 1000);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @androidx.annotation.Nullable Intent data){
super.onActivityResult(requestCode, resultCode, data);
if(requestCode == 1000){
if(resultCode == Activity.RESULT_OK){
Uri imageUri = data.getData();
ProfileImage.setImageURI(imageUri);
UploadImageToFirebase(imageUri);
}
}
}
private void UploadImageToFirebase(Uri image){
StorageReference fileRef = storageReference.child("Profile.jpg");
fileRef.putFile(image).addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
@Override
public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
Toast.makeText(Edit_Profile.this, "Image Uploaded", Toast.LENGTH_SHORT).show();
}
});![enter image description here](https://i.stack.imgur.com/padRc.jpg)`
我知道有一个替代方案,但我不明白它是如何工作的。
startActivityForResult
在更高版本的AndroidX活动和片段API中确实不受欢迎(尽管有警告,但我相信您仍然可以使用它)。从活动中获取结果的新方法是registerForActivityResult
。
在您的代码中,您需要创建一个启动器,它将处理结果(选定的图像)
private final ActivityResultLauncher<Intent> launcher = registerForActivityResult(
new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK
&& result.getData() != null) {
Uri photoUri = result.getData().getData();
//use photoUri here
}
}
);
然后在onClickListener中启动此启动器
profileImage.setOnClickListener(view -> {
Intent intent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
launcher.launch(intent);
});
是startActivityForeResult已弃用。
现在您可以使用ActivityResultLauncher进行回调
https://developer.android.com/training/basics/intents/result#java
我用这个很久了,这个方法现在不推荐了吗?
我的应用程序(Android 4.4.4)中嵌入的webview有问题。在一个页面上有一个“上传图像”按钮,我用openFileChooser管理它。 在某些设备上,当我点击webview中的“上传图像”按钮时,摄像头应用程序启动,我的应用程序被销毁。拍照后,我的应用程序被重新创建,我恢复webview状态(保存在)并调用
我正在尝试使用webview上传图像。一切正常,如预期的那样,但只有图像没有上传,当照片从相机中点击时。请帮我找到这个。我得到了一些答案,但没有帮助或没有回答,就像这个没有回答一样,这对我没有帮助,这是直接打开画廊,不适用于相机,这个没有帮助我 这是我的活动代码
问题内容: 我一直在寻找这个东西,对我没有任何帮助。 我正在尝试将图像从android应用上传到java servlet并将其保存在服务器中。我发现的每个解决方案都不适合我。 我的代码当前正在执行的操作:android应用程序正在将图像发送到servlet,当我尝试保存该图像时,该文件已创建,但它是空的:( 谢谢你的帮助! 我在android客户端中的代码(i_file是设备上的文件位置): 我在
问题内容: 我正在寻找将图像(文件)上传和存储到GAE(java)的最简单方法。搜寻数小时,没有任何简单明确的结果。 找到了此链接。 但是我仍然不知道如何存储图像以及如何检索图像。我在寻找简单的servlet示例。 问题答案: 您提供的链接“我如何处理文件上传到我的应用程序?” 解释了如何上传图像。 要托管图像,您需要使用数据存储服务来存储和提供图像以及其他数据。 这是示例代码。它是一个草图,用于
问题内容: 我必须使用JavaScript创建一个表单,用户将上载JPG文件并与其他信息(例如名称,电子邮件等)一起提交。当用户单击提交时,表单中的所有信息将被加载到值对象中。对于图像文件,我将其设置为。 所以假设: 我还设置了一个servlet来处理提交,但是我不确定如何开始。上传如何进行?用户提交时,如何获取图像信息?这是屏幕截图:http : //imageshack.us/f/32/776