【发布时间】:2019-12-10 01:12:44
【问题描述】:
我目前正在开发一个 android 应用程序,我必须允许用户注册个人资料图片,我可以使用用户名、电子邮件和照片等字段注册用户。当我尝试使用刚刚创建的同一用户重新登录时出现问题,这给了我以下错误....
Permission Denial:从 ProcessRecord 打开提供程序 com.google.android.apps.docs.storagebackend.StorageBackendContentProvider ......................要求您使用 ACTION_OPEN_DOCUMENT 或相关 API 获得访问权限
下面是我创建用户的代码
mAuth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(new OnCompleteListener<AuthResult>() {
@Override
public void onComplete(@NonNull Task<AuthResult> task) {
if (task.isSuccessful()) {
FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser();
UserProfileChangeRequest profileUpdates = new UserProfileChangeRequest.Builder()
.setDisplayName(uname).setPhotoUri(ImgUri).build();
user.updateProfile(profileUpdates);
Toast.makeText(getApplicationContext(), "Registration successful!", Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
Intent intent = new Intent(RegisterActivity.this, Login.class);
startActivity(intent);
finish();
}
else {
Toast.makeText(getApplicationContext(), "Registration failed! Please try again later", Toast.LENGTH_LONG).show();
progressBar.setVisibility(View.GONE);
}
}
});
这是我挑选图片的代码
private void chooseImage() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == RESULT_OK && data != null && data.getData() != null) {
ImgUri = data.getData();
System.out.println(ImgUri);
try {
Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), ImgUri);
// Log.d(TAG, String.valueOf(bitmap));
ImageView imageView = findViewById(R.id.userImg);
imageView.setImageBitmap(bitmap);
} catch (IOException e) {
e.printStackTrace();
}
}
}
下面是我尝试检索用户个人资料图片时的代码
FirebaseUser user = mAuth.getCurrentUser();
System.out.println(user.getPhotoUrl());
img.setImageURI(user.getPhotoUrl());
我需要将 ImageUri 保存到 Firebase 存储以及 Firebase 实时数据库吗?或者是否需要任何权限?我需要吗
【问题讨论】:
-
只需使用
intent.setAction(Intent.ACTION_OPEN_DOCUMENT);而不是ACTION_GET_CONTENT -
@diginoise 感谢您的帮助,我被困了好几个小时
标签: java android firebase firebase-authentication