对于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 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}传递给活动
我真的很沮丧地解决了我的问题,我有一个使用相机的应用程序,当相机拍摄照片时,它将在活动中显示,当我不使用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 更改了管理存储权限的方式... 我想做删除和重命名功能,我将代码修改为:
Map
但我不知道如何获取活动结果以制作 file.delete() 所做的事情。
有人可以帮我吗? 谢谢
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
Android Drive API startResolutionForResult返回RESULT_CANCELLED
>我在开发人员控制台中为〜/ .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.
解决方法
我只需要创建OAuth客户端ID而不是API密钥
>转到Developer Console > Credentials
>点击“创建凭据”> OAuth客户端ID> Android的
>填写详细信息
>创建
>打开OAuth许可屏幕(在凭据页面上)
>填写电子邮件和产品名称
>保存
现在它有效!
Android Fused LocationSettingsRequest从startResolutionForResult中删除“never”选项
https://developers.google.com/android/reference/com/google/android/gms/location/SettingsApi
您可以使用startResolutionForResult()检查是否满足位置要求,如果不满足则显示对话框.
在该对话框中,您可以选择“ok”,“not this time”或“never”.
是否可以禁用“从不”选项?
Google地图官方应用已禁用该选项.
解决方法
LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder() .addLocationRequest(mLocationRequest) .setAlwaysShow(true);
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的相关知识,请在本站寻找。
本文标签: