# 拦截即将启动的程序

Alt text

# 设置拦截监听

JSViewApp 版本1.4.529.20240403开始支持

// 建议 application 的 onCreate 中调用,这样所有进程都能拦截到。
JSViewApp.getInstance().setStartUpHook(new StartUpHook() {
    /**
     * 当程序启动小程序时会被调用
     * @param startParams 要被启动小程序启动参数
     * @param referrer 发起启动的小程序信息
     * @param callback 拦截结果回调
     */
    @Override
    public void onStartMiniApp(MiniAppParams startParams, MiniAppInfo referrer, Common.CommonResultCallback<MiniAppParams> callback) {
        Log.d(TAG, "onStartMiniApp: ");
        // MiniAppInfo 可以获取到当前小程序的信息
        // referrer.getAppName(); // 小程序包名
        // referrer.getAppTitle();//小程序应用名
        
        // RETURN_CODE_CONTINUE 表示不拦截,小程序将用 startParams 启动,
        // 这里可以自己根据需求调整 startParams 中的参数,比如 更改加载的 url: startParams.setUrl();
        // 支持异步: callback不是必须同步调用,可以先异步处理后,回调主线程中再调用
        callback.onResult(StartUpHook.RETURN_CODE_CONTINUE,startParams);
        // 其余的RETURN_CODE 均会拦截小程序的启动。
        // callback.onResult(StartUpHook.RETURN_CODE_SECURE_ERROR, startParams);
    }

    /**
     * 当程序启动原生应用时会被调用
     * @param intent 要被启动的原生应用的Intent
     * @param referrer 发起启动的小程序信息,如果不是由小程序发起的启动referrer 为 null
     * @param callback 拦截结果回调
     */
    @Override
    public void onStartNativeApp(Intent intent, MiniAppInfo referrer, Common.CommonResultCallback<Intent> callback) {
        Log.d(TAG, "onStartNativeApp: ");
        // RETURN_CODE_CONTINUE 表示不拦截,将用 intent 启动,这里可以自己根据需求更换 intent
        // 支持异步: callback不是必须同步调用,可以先异步处理后,回调主线程中再调用
        callback.onResult(StartUpHook.RETURN_CODE_CONTINUE,intent);
        // 其余的RETURN_CODE 均会拦截启动。
        // callback.onResult(StartUpHook.RETURN_CODE_SECURE_ERROR,intent);
    }
});
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

关于启动参数MiniAppParams的文档 请查看 MiniAppParams

# 哪些接口会触发这个拦截

# Java集成时的注意事项

  • 关于JSViewApp.getInstance().setStartUpHook的调用时机,主线程中任意时机都可以调用,只要在小程序调用启动其他小程序前注册都可以生效,建议在MainPageProxy.onCreate启动小程序之前进行注册,这样才能把onCreate/onNewIntent启动处理也纳入此回调的处理范围。
Last Updated: 4/7/2024, 4:01:49 AM