Expo SDK 43及以上版本如何创建IntentLauncher自定义ActivityAction
Expo SDK 43 自定义ActivityAction实现方法
SDK 43对expo-intent-launcher的startActivityAsync()方法做了破坏性变更,不再支持直接传入字符串类型的Intent Action作为第一个入参,必须传入符合规范的ActivityAction类型对象。
自定义ActivityAction的方法非常简单,只需要构造一个包含对应字段的普通对象即可,示例如下:
新旧写法对比
SDK 42 旧写法
import * as IntentLauncher from 'expo-intent-launcher'; // 直接传入字符串Action await IntentLauncher.startActivityAsync('android.settings.WIFI_SETTINGS', { extra: { test_key: 'test_value' } });
SDK 43+ 新写法
import * as IntentLauncher from 'expo-intent-launcher'; // 自定义ActivityAction对象 const customActivityAction = { // *必填字段*:填写你原本要传入的字符串Intent Action action: 'android.settings.WIFI_SETTINGS', // 可选字段:按需添加对应Intent属性即可 // data: '自定义Uri字符串', // type: 'MIME类型字符串', // category: ['Intent分类字符串'], // flags: Intent标记数值, // packageName: 目标应用包名字符串, // className: 目标Activity类名字符串 } // 传入构造好的ActivityAction对象 await IntentLauncher.startActivityAsync(customActivityAction, { extra: { test_key: 'test_value' } });
补充说明
如果你要调用的是Android系统常用的预设Action,也可以直接使用Expo内置的常量避免手动写字符串出错,例如:
IntentLauncher.ActivityAction.WIFI_SETTINGS对应系统WiFi设置页IntentLauncher.ActivityAction.LOCATION_SOURCE_SETTINGS对应系统定位设置页
所有内置常量可以直接在IntentLauncher.ActivityAction命名空间下查看。
内容的提问来源于stack exchange,提问作者Esteban Chornet
相关产品推荐
相关产品推荐

