- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个 Intent 选择器以在手机相机应用和图库/文件管理器之间进行选择。
Intent chooserIntent = Intent.createChooser(clickPhoto(),"Set Image Using");
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,openGallery());
startActivityForResult.launch(chooserIntent);
点击拍照方法:
private Intent clickPhoto() {
Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
ComponentName componentName = takePictureIntent.resolveActivity(requireActivity().getPackageManager());
if (componentName != null) {
try {
createImageFile();
mimeType = "image/*";
ContentValues values = new ContentValues();
values.put(MediaStore.Images.Media.DISPLAY_NAME, getNewFileName());
values.put(MediaStore.Images.Media.MIME_TYPE, mimeType);
values.put(MediaStore.Images.Media.RELATIVE_PATH, getImageDirectoryPath());
Uri imageUri = requireActivity().getContentResolver().insert(MediaStore.Images.Media.getContentUri(MediaStore.VOLUME_EXTERNAL), values);
if (imageUri != null) {
currentPhotoPath = imageUri.toString();
shareUri = imageUri;
}
takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri);
// initRequestCode(takePictureIntent, requestCode);
} catch (IOException ioException) {
Toast.makeText(requireContext(), ioException.getMessage().toString(), Toast.LENGTH_LONG).show();
}
}
return takePictureIntent;
}
打开图库方法:
private Intent openGallery(){
mimeType = "image/*";
Intent intent = new Intent();
Uri collection = MediaStore.Video.Media.getContentUri(
MediaStore.VOLUME_EXTERNAL);
try {
intent =
new Intent(Intent.ACTION_PICK, collection).setType(mimeType);
intent.resolveActivity(requireActivity().getPackageManager());
// initRequestCode(intent, requestCode);
} catch (ActivityNotFoundException e) {
Toast.makeText(requireContext(), e.getLocalizedMessage(), Toast.LENGTH_LONG).show();
}
return intent;
}
ActivityResultLauncher:
ActivityResultLauncher<Intent> startActivityForResult = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(),
result -> {
if (result.getResultCode() == Activity.RESULT_OK) {
//how to tell which intent the user selected ?
}
});
我如何知道用户是使用相机拍摄的照片还是使用文件选择器选择的图像?
最佳答案
你可以在返回它们之前为每个 Intent 添加一个额外的整数,你可以在结果中访问它们,比如:
全局变量
final String SOURCE = "source";
final int SOURCE_CAMERA = 0;
final int SOURCE_GALLERY = 1;
final int SOURCE_UNKNOWN = 2;
相机
...
takePictureIntent.putExtra(SOURCE, SOURCE_CAMERA);
return takePictureIntent;
画廊
..
intent.putExtra(SOURCE, SOURCE_GALLERY);
return intent;
Activity 结果启动器
if (result.getResultCode() == Activity.RESULT_OK) {
//Identify source
int mySource = result.getData().getIntExtra(SOURCE, SOURCE_UNKNOWN )
}
关于Android:使用ActivityResultLauncher时如何区分多个 Intent ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72729119/
我有一个简单的 ActivityResultLauncher 实现,我可以在其中从图库中选择一张图片: ActivityResultLauncher actResLauncher; actResLau
有时我会收到这个 IllegalStateException,它说您必须确保在调用 launch() 之前注册了 ActivityResultLauncher。但是没有方法可以检查 ActivityR
我正在尝试使用 Activity Result APIs为我正在开发的应用程序处理单张照片的挑选。我正在尝试使用其中一个预定义契约(Contract)来简化事情。所以,我正在尝试使用 Activity
试图观察 - 应用程序是否被删除 当我单击确定按钮(删除)时,它返回结果代码 0 取消 与取消按钮相同 activityResultLaunch = registerForActivityResul
我有以下代码 val getContent = registerForActivityResult(ActivityResultContracts.GetContent()) { uri: Uri?
startActivityForResult(intent: Intent!, options: Bundle?) 已弃用。我正在尝试用 ActivityResultLauncher 替换,但我需要传
我正在尝试从用户那里检索一个既可以是图像也可以是 pdf 的文件,使用 registerForActivityResult(ActivityResultContracts.GetContent())
我正在尝试从用户那里检索一个既可以是图像也可以是 pdf 的文件,使用 registerForActivityResult(ActivityResultContracts.GetContent())
我是一名优秀的程序员,十分优秀!