如何过滤设备已安装应用,仅保留google_maps与apple_maps
如何过滤设备已安装应用,仅保留google_maps与apple_maps
嘿,这事儿其实挺简单的!你现在的代码已经能筛选出所有已安装的应用了,要精准锁定google_maps和apple_maps,只需要在过滤逻辑里加个额外的判断条件就行。
核心思路
原来的过滤只检查了应用是否处于已安装状态(也就是mapsAppInfo[key]为true),现在我们要同时满足两个要求:
- 应用确实已安装(
mapsAppInfo[key]为true) - 应用的key属于我们指定的目标列表:
google_maps和apple_maps
修改后的完整代码
useEffect(() => { const loadAvailableMapApps = async () => { const mapsAppInfo = (await launcNavigator.getAvailableApps()) as AppInfo; // 定义我们要保留的目标应用key列表 const targetMapApps = ['google_maps', 'apple_maps']; const availableApps = Object.keys(mapsAppInfo).filter( (key) => mapsAppInfo[key] && targetMapApps.includes(key), ); setAvailableMapApps(availableApps); }; // eslint-disable-next-line no-void void loadAvailableMapApps(); }, []);
额外说明
这样修改后,只有既在目标列表中,又确实已安装的应用才会被加入最终的availableApps数组里。如果你的设备上不存在apple_maps(比如安卓设备),它会自动被过滤掉,不会影响最终结果。
备注:内容来源于stack exchange,提问作者Bomber
相关产品推荐
相关产品推荐

