Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/221.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 上载图像时,uri表示为空_Android_Firebase_File Upload_Camera_Firebase Storage - Fatal编程技术网

Android 上载图像时,uri表示为空

Android 上载图像时,uri表示为空,android,firebase,file-upload,camera,firebase-storage,Android,Firebase,File Upload,Camera,Firebase Storage,我是firebase的新手,我尝试在firebase上上传一个图像,每当我尝试上传它时,总是说uri为空。所以我做了一个if条件,如果它为null,那么它不会上传 我很确定这张照片是拍摄的,因为我制作了一个imageview,这样我就可以看到我拍摄的照片,并且它工作正常 这是我的相机使用的代码 private void askCameraPermissions() { if(ContextCompat.checkSelfPermission(this, Manifest.permissi

我是firebase的新手,我尝试在firebase上上传一个图像,每当我尝试上传它时,总是说uri为空。所以我做了一个if条件,如果它为null,那么它不会上传

我很确定这张照片是拍摄的,因为我制作了一个imageview,这样我就可以看到我拍摄的照片,并且它工作正常

这是我的相机使用的代码

private void askCameraPermissions() {
    if(ContextCompat.checkSelfPermission(this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED)
    {
        ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.CAMERA}, CAMERA_PERM_CODE);
    }
    else
    {
        openCamera();
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
    if (requestCode == CAMERA_PERM_CODE)
    {
        if (grantResults.length < 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
            openCamera();
        }
        else{
            Toast.makeText(this, "Camera Permission Needed", Toast.LENGTH_SHORT).show();
        }
    }
}

private void openCamera() {
    Intent camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(camera, CAMERA_REQUEST_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode == CAMERA_REQUEST_CODE && data != null) {
        imageuri = data.getData();
        Bitmap image = (Bitmap) data.getExtras().get("data");
        selfie.setImageBitmap(image);
        Toast.makeText(getApplicationContext(), "Upload Success", Toast.LENGTH_SHORT).show();
    }
}
private void askCameraPermissions(){
if(ContextCompat.checkSelfPermission(this,Manifest.permission.CAMERA)!=PackageManager.permission\u已授予)
{
ActivityCompat.requestPermissions(这是新字符串[]{Manifest.permission.CAMERA},CAMERA_PERM_代码);
}
其他的
{
openCamera();
}
}
@凌驾
public void onRequestPermissionsResult(int-requestCode,@NonNull-String[]permissions,@NonNull-int[]grantResults){
if(requestCode==CAMERA\u PERM\u CODE)
{
if(grantResults.length<0&&grantResults[0]==PackageManager.PERMISSION\u已授予){
openCamera();
}
否则{
Toast.makeText(这是“需要相机许可”,Toast.LENGTH_SHORT).show();
}
}
}
私有void openCamera(){
意向照相机=新意向(MediaStore.ACTION\u IMAGE\u CAPTURE);
startActivityForResult(摄像机、摄像机请求码);
}
@凌驾
受保护的void onActivityResult(int-requestCode、int-resultCode、@Nullable-Intent-data){
super.onActivityResult(请求代码、结果代码、数据);
if(requestCode==CAMERA\u REQUEST\u CODE&&data!=null){
imageuri=data.getData();
位图图像=(位图)数据.getExtras().get(“数据”);
selfie.setImageBitmap(图像);
Toast.makeText(getApplicationContext(),“上载成功”,Toast.LENGTH\u SHORT.show();
}
}
这是我用来上传图片的代码

private void uploadPicture() {

    if (imageuri != null) {
        final ProgressDialog pd = new ProgressDialog(this);
        pd.setTitle("Uploading...");
        pd.show();

        StorageReference riversRef = storageReference.child(System.currentTimeMillis() + ".jpg");

        riversRef.putFile(imageuri)
                .addOnSuccessListener(new OnSuccessListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onSuccess(UploadTask.TaskSnapshot taskSnapshot) {
                        pd.dismiss();
                        Snackbar.make(findViewById(android.R.id.content), "Attendance successful.", Snackbar.LENGTH_LONG).show();
                    }
                })
                .addOnFailureListener(new OnFailureListener() {
                    @Override
                    public void onFailure(@NonNull Exception exception) {
                        pd.dismiss();
                        Toast.makeText(getApplicationContext(), "Attendance Unsuccessful", Toast.LENGTH_SHORT).show();
                    }
                })
                .addOnProgressListener(new OnProgressListener<UploadTask.TaskSnapshot>() {
                    @Override
                    public void onProgress(@NonNull UploadTask.TaskSnapshot snapshot) {
                        double progressPercent = (100.00 * snapshot.getBytesTransferred() / snapshot.getTotalByteCount());
                        pd.setMessage("Progress: " + (int) progressPercent + "%");
                    }
                });
    }
    else{
        Toast.makeText(getApplicationContext(), "Attendance Unsuccessful", Toast.LENGTH_SHORT).show();
    }
}
private void uploadPicture(){
if(imageuri!=null){
最终ProgressDialog pd=新ProgressDialog(本);
pd.setTitle(“上传…”);
pd.show();
storagereferef=StorageReference.child(System.currentTimeMillis()+“.jpg”);
riversisref.putFile(imageuri)
.addOnSuccessListener(新的OnSuccessListener(){
@凌驾
成功时公共无效(UploadTask.TaskSnapshot TaskSnapshot){
pd.解散();
Snackbar.make(findviewbyd(android.R.id.content),“出席成功”,Snackbar.LENGTH\u LONG.show();
}
})
.addOnFailureListener(新的OnFailureListener(){
@凌驾
public void onFailure(@NonNull异常){
pd.解散();
Toast.makeText(getApplicationContext(),“出席不成功”,Toast.LENGTH\u SHORT.show();
}
})
.addOnProgressListener(新的OnProgressListener(){
@凌驾
public void onProgress(@NonNull UploadTask.TaskSnapshot快照){
double progressPercent=(100.00*snapshot.GetByTestTransferred()/snapshot.getTotalByteCount());
pd.setMessage(“进度:+(int)进度百分比+”%);
}
});
}
否则{
Toast.makeText(getApplicationContext(),“出席不成功”,Toast.LENGTH\u SHORT.show();
}
}

当然可以。在onActivityResult中,您将只获得缩略图的小位图。您现在知道没有uri。
if(imageuri!=null)
在调用上载函数之前,您应该检查一下。Is
Toast.makeText(getApplicationContext(),“Attentication Unsuccessful”,Toast.LENGTH\u SHORT)。show()显示任何消息?