我在排除Kotlin共享意图中的某些软件包时遇到了麻烦。我一直在看这个很棒的帖子/答案(1),但是它给我带来了一些错误,可能是因为从Java到kotlin的转换。我在Intent.EXTRA_INITIAL_INTENTS的工作上遇到了麻烦,但只显示了我给它的数组中的前两个intent。我也尝试过Intent.EXTRA_EXCLUDE_COMPONENTS,但是我根本看不到任何结果(如果有人可以显示一个有效的示例,那将是很棒的)。这是我的意图代码,谢谢您的帮助
val shareIntentsLists = ArrayList<Intent>()
if (!resInfos.isEmpty()) {
for (resInfo in resInfos) {
val packageName = resInfo.activityInfo.packageName
System.out.println(packageName)
if (packageName.toLowerCase().contains("facebook") or
packageName.toLowerCase().contains("instagram")) {
System.out.println(packageName+"l")
val intent = Intent()
intent.component = ComponentName(packageName,
resInfo.activityInfo.name)
intent.action = Intent.ACTION_SEND
intent.type = "image/*"
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
intent.setPackage(packageName)
intent.setType(activity?.getContentResolver().getType(contentUri))
intent.putExtra(Intent.EXTRA_STREAM, contentUri)
shareIntentsLists.add(intent)
}
}
}
val chooserIntent = Intent.createChooser( Intent(), "Choose app to share")
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
shareIntentsLists.toTypedArray())
activity?.startActivity(chooserIntent)
答案 0 :(得分:0)
val chooserIntent = Intent.createChooser( Intent(), "Choose app to share")
chooserIntent.putExtra(Intent.EXTRA_INITIAL_INTENTS,
shareIntentsLists.toTypedArray())
activity?.startActivity(chooserIntent)`
应为:
val chooserIntent = Intent.createChooser( intent, "Choose app to share")
chooserIntent.putExtra(Intent.EXTRA_STREAM,
shareIntentsLists.toTypedArray())
activity?.startActivity(chooserIntent)
其原因是因为Intent()正在创建一个新的intent实例(它是一个构造函数调用),但是intent
是您已定义和修改的对象