Android 安卓;以“打开”;实施
我正试图用Kotlin在Android应用程序中打开下载的文件。目前,我可以通过以下代码设置文件类型,在系统上使用推荐的应用程序打开Android 安卓;以“打开”;实施,android,kotlin,android-intent,Android,Kotlin,Android Intent,我正试图用Kotlin在Android应用程序中打开下载的文件。目前,我可以通过以下代码设置文件类型,在系统上使用推荐的应用程序打开 class Somelistener(private val workManager: WorkManager, private val adapter: someAdapter, private val lifecycle: LifecycleOwner) : AdapterView.OnItemClickListener { private fun ope
class Somelistener(private val workManager: WorkManager, private val adapter: someAdapter, private val lifecycle: LifecycleOwner) : AdapterView.OnItemClickListener {
private fun openWithOther(path: String?, context: Context?) {
if (path == null || context == null) {
return
}
val uri: Uri = Uri.fromFile(File(path))
val mime: String? = getMimeType(path)
val intent = Intent()
intent.action = Intent.ACTION_VIEW
intent.setDataAndType(uri, mime)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
startActivity(context, intent, null)
}
但是,我们不需要直接打开文件,而是通过“open with”提示询问用户,用户可以在哪里试用他想用哪个应用打开文件
这能做到吗?有什么意图
第二个问题,不是回答的必要条件,在startActivity的意图中,捆绑包应该是空的,因为我有它?此外,我似乎也找不到结果的起始点。你要找的是
App chooser
。您可以通过Intent.createChooser(目标、标题)
创建它。在您的场景中,它将是:
带有(意图(意图.动作视图)){
setDataAndType(uri,mime)
addFlags(Intent.FLAG\u GRANT\u READ\u URI\u权限)
val chooserentent=Intent.createChooser(该值为null)
活动?.startActivity(选择内容)
}
请参见您要查找的是
应用程序选择器
。您可以通过Intent.createChooser(目标、标题)
创建它。在您的场景中,它将是:
带有(意图(意图.动作视图)){
setDataAndType(uri,mime)
addFlags(Intent.FLAG\u GRANT\u READ\u URI\u权限)
val chooserentent=Intent.createChooser(该值为null)
活动?.startActivity(选择内容)
}
请参见这似乎与我发布的代码片段没有任何区别。两者都会导致提示使用推荐的应用打开。我从另一个开发人员那里得知,我正在尝试做的事情无法完成。要使通用应用程序对任何应用程序都开放,不仅推荐你写了“用户可以试用他想用哪个应用程序来打开它”,这就是
chooser
的用意。如果要在选择器中显示任何应用程序,请将mime类型设置为“/”->setDataAndType(uri,“*/*”)
Intent.createChooser将创建一个包含所有支持该类型的应用程序的选择器。您无法打开清单中不支持该文件的应用程序的文件。这似乎与我发布的代码段没有任何区别。两者都会导致提示使用推荐的应用打开。我从另一个开发人员那里得知,我正在尝试做的事情无法完成。要使通用应用程序对任何应用程序都开放,不仅推荐你写了“用户可以试用他想用哪个应用程序来打开它”,这就是chooser
的用意。如果要在选择器中显示任何应用程序,请将mime类型设置为“/”->setDataAndType(uri,“*/*”)
Intent.createChooser将创建一个包含所有支持该类型的应用程序的选择器。您无法使用清单中不支持该文件的应用程序打开该文件。