我想用statrActivityForResulu(intent,1)时发现这个被弃用了,上网想查是用registerForrActivityResulu代替了,新的怎么用呀
微信找一下刘望舒的公众号,我记得前几天他发了一个文章关于statrActivityForResulu弃用的
internal class ResultContract :
ActivityResultContract<Boolean?, String?>() {
override fun createIntent(context: Context, input: Boolean?): Intent {
val intent = Intent()//
intent.action = Intent.ACTION_GET_CONTENT
intent.type = "*/*"
intent.addCategory(Intent.CATEGORY_OPENABLE)
return intent
}
override fun parseResult(resultCode: Int, @Nullable intent: Intent?): String? {
if (intent == null) {
return "";
}
val uri = intent.data;
//文件路径
val mFilePath = PickUtils.getPath(BaseApplication.getInstance(), uri);
return mFilePath
}
}
var launcher = registerForActivityResult(ResultContract()) {
//接收返回值
}
// 上面的代码 与onResume onPause 同级
launcher.launch(true)//启动activity 至于如何复用 启动多个不同activity 相信你可以想到办法的 这是原生写法