1.0.4 • Published 4 years ago

react-native-shortcutmanager v1.0.4

Weekly downloads
1
License
MIT
Repository
github
Last release
4 years ago

ShortcutManager 管理 API(Reat Native 0.63 上测试开发)

React Native Version Version NPM

捷径管理 API:v 1.0.4 ,效果如图所示

waCPTP waCFFf

第一步安装
npm install react-native-shortcutmanager --save

RN 0.60 以下需要
react-native link react-native-shortcutmanager(或)
react-native unlink react-native-shortcutmanager
第二步,配置代码(注意导包)
没有请创建 MyReactPackage -> createNativeModules 并,注册
MainApplication -> packages.add(new MyReactPackage())

在代码 MyNativeModule.java 下,导包:import com.shortcut.manager.ExtraData; 添加如下代码
public MyNativeModule(ReactApplicationContext reactContext){
    ...
    //把 MainActivity.class 添加到连接库里 lib
    ExtraData.setActivityClass(MainActivity.class);
}

在代码 MainActivity.java 下,导包:import com.shortcut.manager.ShortcutManagerModule;
在生命周期 onCreate 和 onNewIntent 分别添加如下代码
@Override
public void onCreate(Bundle savedInstanceState) {
  ...
  //--添加这段代码
  ShortcutManagerModule.AppUninitiIntent(getIntent());
}
@Override
public void onNewIntent(final Intent intent) {
  ...
  //--添加这段代码
  ShortcutManagerModule.newIntent(intent);
}
第三步,拷贝图标
菜单图标(android\app\src\main\res\drawable)用 png 格式,放到此目录下,注意先调用 getIconWeightAndHeight
查看图标尺寸,单位 px

使用方法

import * as shortcutManager from 'react-native-shortcutmanager'

shortcutManager.addShortcut("这是菜单名1", "telephone", "这儿传递数据1")
.then((res)=>{
    alert("menuId:" + res);
    that.setState({menuId: res});
})
.catch((err)=>{
    alert("对不起,Android 版本不支持。")
});

shortcutManager.removeAllItem().then(()=>{
  alert('删除成功');
})
以下9个 API 用于菜单图标管理(9 API)
addShortcut -> 添加动态图标菜单
removeItem -> 移除指定项
removeAllItem -> 删除所有动态图标
getIconWeightAndHeight -> 获取菜单图标支持宽高
getShortcutList -> 获取菜单列表
updateShortcut -> 更新指定菜单
addPinShortcut -> 添加桌面菜单,需要权限
getPinShortcutList -> 获取添加(成功)桌面菜单
getExtraData -> 异步获取参数
getExtraDataHook -> 指定全局事件(Hook),回调方法(callback)
removeShortcutEvent -> 注销全局事件
参数除了通过 getExtraData 获取外,还可通过异步回调事件,事件名:ShortcutClick,参数:extra
因 componentDidMount 生命周期原因,APP 启动中,可考虑异步回调事件方式,改变路由等等。

代码如下:
//导入 react-native-shortcutmanager,就会注册,全局事件 Hook
componentDidMount(){
  shortcutManager.getExtraDataHook((data)=>{
    alert(data)
  })
}
//注销全局事件
shortcutManager.removeShortcutEvent()

菜单管理 APIs 详解

添加动态图标菜单
addShortcut(label, icon, extra)

参数说明
  label:菜单标题,长短标签都是此值(setShortLabel、setLongLabel)(必填)
  icon:菜单图标,无扩展名:因为 Android 带深色、浅色,图标最好带底色(Icon)(必填)
  extra:菜单传值(JSON,最好用 JSON.stringify(Object),序列成字符串)(必填)

返回值(通过 Promise)
  成功(then)返回菜单ID(menuId,是一个 UUID)
  失败(catch)返回错误对象(err) Tip: 9523 版本不支持,请使用(API 25 以上)
移除指定菜单项(仅限动态菜单,桌面图标自行移除)
removeItem(menuId)

参数说明
  menuId:菜单Id(添加菜单返回的 UUID,必填)

返回值(通过 Promise)
  成功(then)返回成功(true)
  失败(catch)返回错误对象(err)
    * code: 9523 版本不支持,请使用(API 25 以上)
    * code: -1 menuId 不能为空
移除所有菜单项(仅限动态菜单,桌面图标自行移除)
removeAllItem()

参数说明
  无参数

返回值(通过 Promise)
  成功(then)返回成功(true)
  失败(catch)返回错误对象(err) Tip: 9523 版本不支持,请使用(API 25 以上)
获取系统支持的图标宽高(设计图标前,先获取查看一下宽高 px)
getIconWeightAndHeight()

参数说明
  无参数

返回值(通过 Promise)
  成功(then)返回系统支持的 Icon (width、height),单位 px
  失败(catch)返回错误对象(err) Tip: 9523 版本不支持,请使用(API 25 以上)
获取所有菜单列表
getShortcutList()

参数说明
  无参数

返回值(通过 Promise)
  成功(then)返回菜单列表(size:0,result:[{id, label}])
  失败(catch)返回错误对象(err) Tip: 9523 版本不支持,请使用(API 25 以上)
根据菜单Id,更新指定菜单项
updateShortcut(menuId, label, icon, extra)

参数说明
  menuId:需要更新的菜单ID(必填)
  label:菜单标题(必填)
  icon:菜单图标(必填)
  extra:菜单传值(必填,不要传空字符串)

返回值(通过 Promise)
  成功(then)返回菜单ID(menuId,是一个 UUID)
  失败(catch)返回错误对象(err)
    * code: 9523 版本不支持,请使用(API 25 以上)
    * code: -1 menuId 不能为空
添加桌面图标(需要权限执行)
addPinShortcut(label, icon, extra)

参数说明
  label:图标的标题(必填)
  icon:图标(用上面的路径)(必填)
  extra:传递参数(JSON,最好用 JSON.stringify(Object),序列成字符串)(必填)

返回值(通过 Promise)
  成功(then)返回图标ID(iconId,是一个 UUID,可能因权限而失败,图标 ID 不一定有效)
  失败(catch)返回错误对象(err) Tip: 9523 版本不支持,请使用(API 25 以上)
    Tip:不知道是否成功,添加后需手工删除。
获取添加成功的桌面图标
getPinShortcutList()

参数说明
  无参数

返回值(通过 Promise)
  成功(then)返回图标ID(size:0,result:[{id, label}])
  失败(catch)返回错误对象(err) Tip: 9523 版本不支持,请使用(API 25 以上)
异步获取参数对象(可在 componentDidMount 里获取,以判断 APP 启动类型,做相应的事情)
getExtraData(callback)

参数说明
  callback:异步方法回调(extra)

例如(e.g):
componentDidMount(){
  var that = this;
  getExtraData((extra)=>{
    ...判断后做你的事情,如跳转路由传参,等等
  })
}
注意:参数只能获取一次,阅后即焚。
导入 react-native-shortcutmanager,就会注册,全局事件 Hook
getExtraDataHook(callback)

参数说明
  callback:异步方法回调(extra)

例如(e.g):
componentDidMount(){
  shortcutManager.getExtraDataHook((data)=>{
    alert(data)
  })
}
注销全局事件(Hook)
removeShortcutEvent()

参数说明
  无参数

例如(e.g):
componentWillUnmount(){
  shortcutManager.removeShortcutEvent()
}