通过intent-filter kotlin从其他应用程序接收数据?
Posted
技术标签:
【中文标题】通过intent-filter kotlin从其他应用程序接收数据?【英文标题】:Receive data from other app through intent-filter kotlin? 【发布时间】:2021-06-30 11:08:03 【问题描述】:主活动
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" />
那么你能告诉我我缺少什么吗?
【问题讨论】:
【参考方案1】:您从不使用HomeFragment
。在if
块中,您有val fragInfo = HomeFragment()
,将参数放在该片段上......然后永远不要对fragInfo
做任何事情。因此,HomeFragment
实例及其参数将被垃圾回收。
【讨论】:
我无法理解您到底想说什么,所以如果可能的话您可以更改代码吗? @BhavyaVarmora:“如果可能的话,您可以更改代码吗?” - 不,因为代码不在您的问题中。在某处,您创建了 两个HomeFragment
实例。一个——在你的第一个代码 sn-p 中显示的那个——是没用的,因为你什么都不做。第二个是实际设置你的 UI 的那个,它没有你的文本的参数。找到第二个 HomeFragment
的创建位置,然后决定如何将该代码与第一个代码 sn-p 中的内容合并。以上是关于通过intent-filter kotlin从其他应用程序接收数据?的主要内容,如果未能解决你的问题,请参考以下文章
通过适配器在片段之间传递数据(Kotlin Android)
Android Intent-filter 动作名称与数据方案
Kotlin Vocabulary | Kotlin 内建代理