# Intent 界面跳转
从 JSKit 1.10.0-b 版本开始,引入了 intent 模块,开始全面支持 Intent 界面跳转。
提示
这个接口与 ui 模块的 VPage 路由的设计目的不同,需要注意区别。VPage 路由是单一扩展中的界面跳转逻辑;Intent 则可以实现不同扩展,或者是手机上不同 App 界面的跳转。
intent API 是对 Android 平台的 Intent (opens new window) 的简单封装,JSKit App 提供了 Activity 跳转的功能,用来执行界面跳转请求。这个 API 在希望通过 URL Scheme
唤起第三方 App 指定界面时尤其有用。
# Intent 模块概览
declare module 'intent' {
export type UriType = string | File;
export interface ClipData {
label: string;
mimeTypes: string[];
data: {
type: 'text' | 'uri';
value: string | UriType;
}
}
export default class Intent {
constructor();
setAction(action: string): Intent;
setData(uri: UriType | null, type?: string | null): Intent;
addCategory(category: string): Intent;
setComponent(pkg: string, clz: string): Intent;
putExtraString(key: string, value: string): Intent;
putExtraInt(key: string, value: number): Intent;
putExtraBool(key: string, value: boolean): Intent;
putExtraChar(key: string, value: number): Intent;
putExtraShort(key: string, value: number): Intent;
putExtraLong(key: string, value: number): Intent;
putExtraFloat(key: string, value: number): Intent;
putExtraDouble(key: string, value: number): Intent;
putExtraUri(key: string, uri: UriType): Intent;
setClipData(data: ClipData): Intent;
addFlags(flags: number): Intent;
removeFlags(flags: number): Intent;
startActivity(closeThis?: boolean): void;
chooseActivity(title: string, closeThis?: boolean): void;
}
}
一般每个 Intent 必须使用 setAction(action: string)
和 setData(uri: UriType | null, type?: string | null)
提供一个明确的 Action 和 Data;可选的提供 Categories 、Type 、Component 或 Extras;最后调用 startActivity(closeThis?: boolean)
或 chooseActivity(title: string, closeThis?: boolean)
。
# Intent 详细说明
# 导入 Intent 对象
import Intent from 'intent';
const intent = new Intent();
intent
模块是导出的默认类。
# 设置 Action
setAction(action: string): Intent;
设置 action 并返回当前 Intent 实例。URL Scheme
较常用的 action 是 android.intent.action.VIEW
。一些标准的 Action 参考 Intent (opens new window) 中的相关说明,需要注意的是,JSKit App 中使用的是其常数值,比如 ACTION_VIEW (opens new window) Constant Value: "android.intent.action.VIEW"
。另外不同的手机 App 界面还可以使用自己定义的各种 action,这些一般只能通过搜索引擎自行获取。
# 设置 data,type extra 等…
setData(uri: UriType | null, type?: string | null): Intent;
设置 data 和 type 并返回当前 Intent 实例。
addCategory(category: string): Intent;
setComponent(pkg: string, clz: string): Intent;
putExtraString(key: string, value: string): Intent;
putExtraInt(key: string, value: number): Intent;
putExtraBool(key: string, value: boolean): Intent;
putExtraChar(key: string, value: number): Intent;
putExtraShort(key: string, value: number): Intent;
putExtraLong(key: string, value: number): Intent;
putExtraFloat(key: string, value: number): Intent;
putExtraDouble(key: string, value: number): Intent;
putExtraUri(key: string, uri: UriType): Intent;
setClipData(data: ClipData): Intent;
addFlags(flags: number): Intent;
removeFlags(flags: number): Intent;
剩余的其他设置 extra 等信息不再赘述,就是根据目标界面的要求设置一些启动界面的额外参数等。
# 启动界面
startActivity(closeThis?: boolean): void;
chooseActivity(title: string, closeThis?: boolean): void;
直接启动界面,或者是选择界面启动,closeThis 传递 true
会在发送启动指令后关闭当前界面。
提示
本 API 需要了解一些 Android 原生开发里的 Intent 跳转知识,不妨搜索引擎了解一点相关信息。有任何意见或建议请联系我们。后期会提供一些 demo 示例展示一些使用场景,还请期待……