Android应用如何仅在选中不超过5个附件时在分享面板中显示
Android分享面板按选中文件数量过滤显示实现方案
你当前在清单中注册的多图分享intent-filter属于静态注册规则,本身仅支持匹配Action、Category、MimeType三类属性:
<intent-filter> <action android:name="android.intent.action.SEND_MULTIPLE" /> <category android:name="android.intent.category.DEFAULT" /> <data android:mimeType="image/*" /> </intent-filter>
系统匹配分享组件时不会读取Intent携带的文件列表长度,因此无法仅通过该静态配置实现5个及以下文件才显示的需求。
可行实现方案
方案1:Android 11及以上版本仅在分享快捷区显示(符合不在选中后判断的要求)
Android 11(API 30)及以上系统支持通过ShortcutManager动态注册分享快捷项,你可以在系统分享面板拉起时的回调中获取选中文件数量,仅当数量≤5时返回你的应用快捷入口,该入口会显示在分享面板的顶部快捷区域,不会出现在下方全应用列表中。
方案2:全版本兼容折衷方案
如果需要覆盖全版本且需要在全应用列表中显示,目前没有官方支持的完美方案,你可以采用选中后判断的逻辑,该实现成本最低:
在接收分享的Activity的onCreate方法最前端加入数量校验逻辑:
// Java版本可以用getParcelableArrayListExtra(Intent.EXTRA_STREAM)获取列表 val fileCount = intent.getParcelableArrayListExtra<Uri>(Intent.EXTRA_STREAM)?.size ?: 0 if (fileCount > 5) { Toast.makeText(this, "最多支持选择5个文件", Toast.LENGTH_SHORT).show() finish() return } // 符合数量要求再执行后续业务逻辑
该方案是在用户选中你的应用之后才做判断,不符合你原本不想选中后处理的预期,但这是全版本兼容下成本最低的实现方式。
内容的提问来源于stack exchange,提问作者Jisoo
相关产品推荐
相关产品推荐

