我从其他应用程序接收一些文本,例如如果人们从YouTube应用程序共享视频,我的应用程序将出现在可共享列表中。 如果他们选择了我的应用程序,我想要获取文本内容。
我有一个如下的意图过滤器。
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:host="*" android:mimeType="text/*" />
</intent-filter>
我可以通过活动中的onNewIntent
方法访问数据。
override fun onNewIntent(intent: Intent?) {
Log.d(TAG, intent?.getStringExtra(Intent.EXTRA_TEXT).toString())
super.onNewIntent(intent)
}
但我想访问组合函数内部的文本,我该怎么做?
onNewIntent()
中更新一个活动范围的 ViewModel,并通过MutableState
、StateFlow
、LiveData
或其他方式使数据可用。然后,您需要将该 ViewModel 传递到根组合(使用setContent()
设置的组合)中,以便子组合可以观察结果。 - CommonsWare