GVKun编程网logo

android相机:无法将结果ResultInfo {who = null,request = 0,result = -1,data =null}传递给活动

6

对于android相机:无法将结果ResultInfo{who=null,request=0,result=-1,data=null}传递给活动感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供

对于android相机:无法将结果ResultInfo {who = null,request = 0,result = -1,data =null}传递给活动感兴趣的读者,本文将提供您所需要的所有信息,并且为您提供关于Android 11 上 createDeleteRequest() 的 OnActivtyResult、Android Drive API startResolutionForResult返回RESULT_CANCELLED、Android Fused LocationSettingsRequest从startResolutionForResult中删除“never”选项、Android onActivityResult intent==null的宝贵知识。

本文目录一览:

android相机:无法将结果ResultInfo {who = null,request = 0,result = -1,data =null}传递给活动

android相机:无法将结果ResultInfo {who = null,request = 0,result = -1,data =null}传递给活动

我真的很沮丧地解决了我的问题,我有一个使用相机的应用程序,当相机拍摄照片时,它将在活动中显示,当我不使用cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,mPhotoUri);照片时,将在活动中显示,但是名称和路径文件未显示就像我想要的。我正在使用galaxy选项卡进行编译,我已经按照教程从此处,此处和此处解决了我的问题,但是我的应用程序仍然强制关闭并出错,这是我的代码:

{                File sdCard= Environment.getExternalStorageDirectory();                File path = new File (sdCard.getAbsolutePath() + "/android/data/spaj_foto");                path.mkdir();                File file= new File (path,"spaj_foto.png");                String filePath ="/android/data/spaj_foto/spaj_foto.png";                  try {                      file.createNewFile();                    } catch (IOException e) {}                 mPhotoUri = Uri.fromFile(file);                  values.put( MediaStore.Images.ImageColumns.DATA, file.getPath());                 mPhotoUri=getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, values);                  Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                   cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT, mPhotoUri);                  startActivityForResult(cameraIntent,TAKE_PHOTO_CODE );            }

活动结果方法:

@Override        protected void onActivityResult(int requestCode, int resultCode, Intent data) {              if (requestCode == TAKE_PHOTO_CODE && resultCode == RESULT_OK) {                Bitmap photo = (Bitmap) data.getExtras().get("data");                 image_spaj.setImageBitmap(photo);                // CALL THIS METHOD TO GET THE URI FROM THE BITMAP                Uri tempUri = getImageUri(getApplicationContext(), photo);                // CALL THIS METHOD TO GET THE ACTUAL PATH                File finalFile = new File(getRealPathFromURI(tempUri));//              System.out.println(mImageCaptureUri);            }          }        public String getRealPathFromURI(Uri mPhotoUri) {            Cursor cursor = getContentResolver().query(mPhotoUri, null, null, null, null);             cursor.moveToFirst();             int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);             return cursor.getString(idx);         }        public Uri getImageUri(Context inContext, Bitmap inImage) {            ByteArrayOutputStream bytes = new ByteArrayOutputStream();            inImage.compress(Bitmap.CompressFormat.JPEG, 100, bytes);            String path = Images.Media.insertImage(inContext.getContentResolver(), inImage, "Title", null);            return Uri.parse(path);        }

这是我的logcat说的:

    09-27 10:59:43.186: E/AndroidRuntime(31318): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=null} to activity {org.example.touch/org.example.touch.FormSpaj}: java.lang.NullPointerException09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3179)09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3222)09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.access$1100(ActivityThread.java:140)09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1276)09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.os.Handler.dispatchMessage(Handler.java:99)09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.os.Looper.loop(Looper.java:137)09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.main(ActivityThread.java:4895)09-27 10:59:43.186: E/AndroidRuntime(31318):    at java.lang.reflect.Method.invokeNative(Native Method)09-27 10:59:43.186: E/AndroidRuntime(31318):    at java.lang.reflect.Method.invoke(Method.java:511)09-27 10:59:43.186: E/AndroidRuntime(31318):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:994)09-27 10:59:43.186: E/AndroidRuntime(31318):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:761)09-27 10:59:43.186: E/AndroidRuntime(31318):    at dalvik.system.NativeStart.main(Native Method)09-27 10:59:43.186: E/AndroidRuntime(31318): Caused by: java.lang.NullPointerException09-27 10:59:43.186: E/AndroidRuntime(31318):    at org.example.touch.FormSpaj.onActivityResult(FormSpaj.java:993)09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.Activity.dispatchActivityResult(Activity.java:5347)09-27 10:59:43.186: E/AndroidRuntime(31318):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3175)09-27 10:59:43.186: E/AndroidRuntime(31318):    ... 11 more

我真的希望有人可以帮助我解决我的问题,我已经堆满了,再也无法思考,请有人帮助我…谢谢。

答案1

小编典典

确保您同时具有“ 摄像头权限” 和“ 读取/写入外部存储 权限”。

试试看,这对我来说就像魅力

private String selectedImagePath = "";    final private int PICK_IMAGE = 1;    final private int CAPTURE_IMAGE = 2;public Uri setImageUri() {        // Store image in dcim        File file = new File(Environment.getExternalStorageDirectory() + "/DCIM/", "image" + new Date().getTime() + ".png");        Uri imgUri = Uri.fromFile(file);        this.imgPath = file.getAbsolutePath();        return imgUri;    }    public String getImagePath() {        return imgPath;    }btnGallery.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                Intent intent = new Intent();                intent.setType("image/*");                intent.setAction(Intent.ACTION_GET_CONTENT);                startActivityForResult(Intent.createChooser(intent, ""), PICK_IMAGE);            }        });        btnCapture.setOnClickListener(new OnClickListener() {            @Override            public void onClick(View v) {                final Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);                intent.putExtra(MediaStore.EXTRA_OUTPUT, setImageUri());                startActivityForResult(intent, CAPTURE_IMAGE);            }        });@Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        if (resultCode != Activity.RESULT_CANCELED) {            if (requestCode == PICK_IMAGE) {                selectedImagePath = getAbsolutePath(data.getData());                imgUser.setImageBitmap(decodeFile(selectedImagePath));            } else if (requestCode == CAPTURE_IMAGE) {                selectedImagePath = getImagePath();                imgUser.setImageBitmap(decodeFile(selectedImagePath));            } else {                super.onActivityResult(requestCode, resultCode, data);            }        }    }public Bitmap decodeFile(String path) {        try {            // Decode image size            BitmapFactory.Options o = new BitmapFactory.Options();            o.inJustDecodeBounds = true;            BitmapFactory.decodeFile(path, o);            // The new size we want to scale to            final int REQUIRED_SIZE = 70;            // Find the correct scale value. It should be the power of 2.            int scale = 1;            while (o.outWidth / scale / 2 >= REQUIRED_SIZE && o.outHeight / scale / 2 >= REQUIRED_SIZE)                scale *= 2;            // Decode with inSampleSize            BitmapFactory.Options o2 = new BitmapFactory.Options();            o2.inSampleSize = scale;            return BitmapFactory.decodeFile(path, o2);        } catch (Throwable e) {            e.printStackTrace();        }        return null;    }public String getAbsolutePath(Uri uri) {        String[] projection = { MediaColumns.DATA };        @SuppressWarnings("deprecation")        Cursor cursor = managedQuery(uri, projection, null, null, null);        if (cursor != null) {            int column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);            cursor.moveToFirst();            return cursor.getString(column_index);        } else            return null;    }

Android 11 上 createDeleteRequest() 的 OnActivtyResult

Android 11 上 createDeleteRequest() 的 OnActivtyResult

如何解决Android 11 上 createDeleteRequest() 的 OnActivtyResult?

不幸的是,Android 11 更改了管理存储权限的方式... 我想做删除和重命名功能,我将代码修改为:

Map

但我不知道如何获取活动结果以制作 file.delete() 所做的事情。

有人可以帮我吗? 谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

Android Drive API startResolutionForResult返回RESULT_CANCELLED

Android Drive API startResolutionForResult返回RESULT_CANCELLED

我正在尝试将Google云端硬盘应用到我的 Android应用中,我甚至无法连接到Api客户端.我不知道为什么:

>我在开发人员控制台中为〜/ .android / debug.keystore配置了项目和凭据(值似乎是正确的)
>我有来自Drive for Android Documentation的复制粘贴代码 – >在方法onConnectionFailed()我调用connectionResult.startResolutionForResult()如果connectionResult.hasResolution()
>在onActivityResult中匹配requestCode即使我选择了我的帐户,我也收到了resultCode == 0(RESULT_CANCELLED)

你知道为什么吗?我还尝试添加:

<Meta-data
    android:name="com.google.android.apps.drive.APP_ID"
    android:value="----"/>

在文档页面上没有提到但在某些SO帖子上没有提到的Manifest.

感谢帮助

编辑:

我也试过使用enableAutoManage

mGoogleapiclient = new Googleapiclient.Builder(this)
        .enableAutoManage(this,this)
        .addApi(Drive.API)
        .addScope(Drive.ScopE_FILE)
        .build();

而不是manualy配置连接和connectionFailed回调:

.addConnectionCallbacks(this)
        .addOnConnectionFailedListener(this)

它在onConnectionFailed方法中返回错误代码13.根据documentation看来,这在以下时间返回:

OnConnectionFailedListener passed to
enableAutoManage(FragmentActivity,
Googleapiclient.OnConnectionFailedListener) when the user choses not
to complete a provided resolution. For example by canceling a dialog.

但我没有取消它.

我在Nexus 5x上测试它 – Android N.

解决方法

在阅读有关钱包api的内容时,我发现了问题所在

我只需要创建OAuth客户端ID而不是API密钥

>转到Developer Console > Credentials
>点击“创建凭据”> OAuth客户端ID> Android的
>填写详细信息
>创建
>打开OAuth许可屏幕(在凭据页面上)
>填写电子邮件和产品名称
>保存

现在它有效!

Android Fused LocationSettingsRequest从startResolutionForResult中删除“never”选项

Android Fused LocationSettingsRequest从startResolutionForResult中删除“never”选项

a根据这个:

https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi

您可以使用startResolutionForResult()检查是否满足位置要求,如果不满足则显示对话框.

在该对话框中,您可以选择“ok”,“not this time”或“never”.

是否可以禁用“从不”选项?

Google地图官方应用已禁用该选项.

解决方法

是的,所以当你使用LocationSettingsRequest.Builder. setAlwaysShow(true)构建设置请求时,你会这样做.一个例子如下:
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder()
                .addLocationRequest(mLocationRequest)
                .setAlwaysShow(true);

Android onActivityResult intent==null

Android onActivityResult intent==null

首先我先描述一下常规步骤:


1.启动一个新activity

startActivityForResult(intent, 3);


2.结束新启动的activity 放置数据

Intent intent = new Intent();
intent.putExtra("isDel", false);
setResult(Activity.RESULT_OK, intent);

3.接收数据

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 3 ) { 

data.getBooleanExtra("isDel", false);

//你的操作

}
}

今天遇到的问题是 在第三步 无法获取 data ,data一直为null

怎么回呢 第一次使用就出问题,不太甘心,又看了一遍代码,发现了问题所在,

我在填写数据之前,调用了 this.finish(); 看来我还是有些粗心!大家注意不要犯这个小错误~,错误虽然低级,但是也要防着点!

祝大家code no bug!

关于android相机:无法将结果ResultInfo {who = null,request = 0,result = -1,data =null}传递给活动的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Android 11 上 createDeleteRequest() 的 OnActivtyResult、Android Drive API startResolutionForResult返回RESULT_CANCELLED、Android Fused LocationSettingsRequest从startResolutionForResult中删除“never”选项、Android onActivityResult intent==null的相关知识,请在本站寻找。

本文标签: