gpt4 book ai didi

java - registerActivityForResult 从相机获取结果

转载 作者:行者123 更新时间:2023-12-04 23:55:57 24 4
gpt4 key购买 nike

特别是@Muntashir Akon,我来自“Down Under”,请抽出时间。

众所周知,startActivityForResult已弃用,感谢 google。我们如何从相机中获取结果……这是我的代码 intentData 总是返回 null。请帮助这让我发疯。

我可能使用了错误的调用者,但我似乎无法在互联网上找到任何东西

对于@Muntashir Akon,真正的来电者是你的...

    protected final RegisterActivityResultHelper<Intent, 
ActivityResult> activityLauncher =
RegisterActivityResultHelper.registerActivityForResult(
this );
RegisterActivityForResult
ActivityResultLauncher activityResultLauncher =
registerForActivityResult( new ActivityResultContracts.StartActivityForResult(),
new ActivityResultCallback()
{
@Override
public void onActivityResult( Object result )
{
}
});
    /////////////////////////////////////////////////////////////////////////////////////

private void takePhoto()
{
String uuid = UUID.randomUUID().toString();
File outputDir = getCacheDir();
File file;
try
{
file = File.createTempFile( uuid, ".jpg", outputDir );
}
catch( IOException e )
{
return;
}

Intent intent = new Intent( android.provider.MediaStore.ACTION_IMAGE_CAPTURE );
Uri uri;
try
{
uri = FileProvider.getUriForFile( Objects.requireNonNull(
getApplicationContext()),
BuildConfig.APPLICATION_ID + ".fileProvider", file );
}
catch( IllegalArgumentException e )
{
return;
}

intent.putExtra( MediaStore.EXTRA_OUTPUT, uri );
activityLauncher.launch( intent );
activityLauncher.setOnActivityResult( result ->
{
if( result.getResultCode() == RESULT_CANCELED )
return;

Intent intentData = result.getData();
if( intentData == null )
{
return;
}

Uri imageUri = intentData.getData();
Bundle bundle = intentData.getExtras();

Log.e("URI",imageUri.toString());
Bitmap bmp = ( Bitmap ) bundle.get( "data" );
} );
}

最佳答案

好的,我有答案了,希望对大家有帮助

启动器...

    /////////////////////////////////////////////////////////////////

ActivityResultLauncher<Uri> takeAPhoto = registerForActivityResult(
new ActivityResultContracts.TakePicture(), result ->
{
if( !result )
return;

Helpers.loadPicIntoGlide( ivItemImage, photoTakenUri );
etImageName.setText( photoTakenUri.getPath() );
} );

来电者...

    /////////////////////////////////////////////////////////////////////////////////////

private void takePhoto()
{
String uuid = UUID.randomUUID().toString();
File outputDir = getCacheDir();
File file;
try
{
file = File.createTempFile( uuid, ".jpg", outputDir );
}
catch( IOException e )
{
return;
}

try
{
photoTakenUri = FileProvider.getUriForFile( Objects.requireNonNull(
getApplicationContext()),
BuildConfig.APPLICATION_ID + ".fileProvider", file );
}
catch( IllegalArgumentException e )
{
return;
}

takeAPhoto.launch( photoTakenUri );
}

////////////////////////////////////////////////////////////////////////

关于java - registerActivityForResult 从相机获取结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69068890/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com