如何解决通过意图过滤器 kotlin 从其他应用程序接收数据?
主活动
val isActivityLaunchedFromActionSend = intent?.action == Intent.ACTION_SEND
val isActivityLaunchedFromActionSendMultiple = intent?.action == Intent.ACTION_SEND_MULTIPLE
val isTextData = intent.type?.startsWith("text/") == true
val isImageData = intent.type?.startsWith("image/") == true
if (isActivityLaunchedFromActionSend && isTextData) {
// Session 1: Handle received text data
val sentString = intent.getStringExtra(Intent.EXTRA_TEXT)
//Sending data to fragment so we can set the value in edittext.
val bundle = Bundle()
bundle.putString("message",sentString)
val fragInfo = HomeFragment()
fragInfo.setArguments(bundle)
} else if (isActivityLaunchedFromActionSend && isImageData) {
// Session 2: Handle received image data
val sentImageURI = intent.getParcelableExtra<Parcelable>(Intent.EXTRA_STREAM) as? Uri
} else if (isActivityLaunchedFromActionSendMultiple && isImageData) {
val imageURIList = intent.getParcelableArrayListExtra<Parcelable>(Intent.EXTRA_STREAM) ?: arrayListOf()
}
首页片段
override fun onViewCreated(view: View,savedInstanceState: Bundle?) {
super.onViewCreated(view,savedInstanceState)
val myValue =requireArguments().getString("message")
etUrl.setText(myValue)
此处 myValue 中的值变为 null。在 HomeFragment 中有一个 editText 所以当用户向我的应用发送链接时,该链接将自动在 EditText 中过去。
清单
<intent-filter>
<action android:name="android.intent.action.SEND" />
<category android:name="android.intent.category.DEFAULT" />
<data android:mimeType="text/plain" />
所以你能告诉我我遗漏了什么吗?
解决方法
您从未使用过 HomeFragment
。在 if
块中,您有 val fragInfo = HomeFragment()
,将参数放在该片段上......然后永远不要对 fragInfo
做任何事情。因此,该 HomeFragment
实例及其参数将被垃圾收集。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。