当我尝试使用新的androidx.activity.result API通过getLaunchIntentForPackage()启动另一个应用程序并使用startForResult时,这个应用程序会启动,但在我的调用应用程序中,我立即收到RESULT_CANCELED。我做错了什么?
在AndroidManifest中使用查询:
class MainActivity : AppCompatActivity() {
private val startForResult =
registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result: ActivityResult ->
if (result.resultCode == Activity.RESULT_OK) {
findViewById<TextView>(R.id.message)?.text = "RETURNED OK!! "
}
else if (result.resultCode == Activity.RESULT_CANCELED) {
findViewById<TextView>(R.id.message)?.text = "RETURNED CANCELED!!"
}
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.main_activity)
val button = findViewById<MaterialButton>(R.id.button)
button.setOnClickListener {
startForResult.launch(getMyapplicationIntent())
}
}
private fun getMyapplicationIntent(): Intent? {
return packageManager.getLaunchIntentForPackage("com.example.myapplication")
}
}
在AndroidManifest中使用查询:
<queries>
<package android:name="com.example.myapplication" />
</queries>
Intent
不返回结果,您可以摆脱大部分代码,只需在Intent
上调用startActivity()
即可。 - CommonsWare