安卓开发没有关闭界面就调用了onActivityResult方法?onActivityResult方法Intent-data总是null

开发是遇到一个问题,在一个Activity的启动模式是singleTask的时候(AndroidManifest.xml中对Activity的launchMode设置),这样设置的话,会在调用startactivityforresult方法后直接调用onActivityResult方法里边的东西,自然你的intent也就没有了,是null的了,都没有返回。 

最后附上Activity页面跳转时候的方法调用 : 

用startActivity方法跳转是单纯的跳转不需要“带回”数据 ;

用startActivityforResult方法跳转要带回数据 , 在跳转到的界面setResult() 方法,然后关闭之后就带回数据了 ,数据就在onActivityResult方法里边的Intent参数 。

好的,以下是代码示例: ``` private static final int REQUEST_IMAGE_CAPTURE = 1; private Uri imageUri; // 调用系统相机拍照 private void dispatchTakePictureIntent() { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); if (takePictureIntent.resolveActivity(getPackageManager()) != null) { // 创建一个文件来保存照片 File photoFile = null; try { photoFile = createImageFile(); } catch (IOException ex) { // 错误处理 } // 如果文件创建成功,则将其传递给Intent,以保存照片 if (photoFile != null) { imageUri = FileProvider.getUriForFile(this, "com.example.myapplication.fileprovider", photoFile); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE); } } } // 创建一个文件来保存照片 private File createImageFile() throws IOException { // 使用时间戳作为文件名 String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date()); String imageFileName = "JPEG_" + timeStamp + "_"; File storageDir = getExternalFilesDir(Environment.DIRECTORY_PICTURES); File image = File.createTempFile( imageFileName, /* 前缀 */ ".jpg", /* 后缀 */ storageDir /* 目录 */ ); return image; } // 处理相机拍照后返回的结果 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_IMAGE_CAPTURE && resultCode == RESULT_OK) { // 从文件中读取照片数据 try { Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); // 在这里进行照片数据的处理,例如显示到ImageView中 imageView.setImageBitmap(bitmap); } catch (IOException e) { // 错误处理 } } } ``` 上述代码使用了 FileProvider 来获取保存照片的文件路径,需要在 AndroidManifest.xml 文件中添加以下内容: ``` <application> ... <provider android:name="androidx.core.content.FileProvider" android:authorities="com.example.myapplication.fileprovider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> </provider> ... </application> ``` 其中,@xml/file_paths 是一个 XML 文件,用来指定 FileProvider 的路径配置。示例代码如下: ``` <?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="my_images" path="Android/data/com.example.myapplication/files/Pictures" /> </paths> ``` 这里将照片保存在应用的外部存储空间中,路径为 Android/data/com.example.myapplication/files/Pictures。如果需要保存在其他路径,请修改 file_paths.xml 文件中的 path 属性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值