骁骑
骁骑
  • 发布:2016-01-12 16:27
  • 更新:2020-10-16 10:44
  • 阅读:28670

Android 平台5+SDK接口说明

分类:5+ SDK

查看Android平台5+SDK API参考手册请点击

初始化SDK

initSDK(ICore core)

说明:
初始化SDK, SDK所有接口必须在初始化之后才可以调用
参数:

  • core(ICore ) 5+内核对象

示例

    @Override  
    public void onCoreReady(ICore coreHandler) {  
        try {  
            SDK.initSDK(coreHandler);  
            SDK.requestAllFeature();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }

SDK集成使用方法

IApp startWebApp(Activity activity,String appBasePath,String startArgs,IWebviewStateListener listener,IOnCreateSplashView ocs)

说明:
创建并启动5+WebApp对象
参数:

  • activity(Activity) Activity对象
  • appBasePath(String) 移动应用所在的目录
  • startArgs(String) 应用启动时传递的参数
  • listener(IWebviewStateListener) Webview事件监听对象,用来监听应用的首页面加载状态
  • ocs(IOnCreateSplashView) Splash事件监听对象,用来监听splash页面的加载和关闭事件

示例

    public void onCoreInitEnd(ICore coreHandler) {  

        //创建默认webapp,  
        String appBasePath = "/apps/HelloH5";//表示 file:///android_asset/apps/HBuilder  
        String args = "{url:'http://www.baidu.com'}";//设置启动参数  

        app = SDK.startWebApp(activity,appBasePath, args, new IWebviewStateListener() {  
            @Override  
            public Object onCallBack(int pType, Object pArgs) {  

                switch (pType) {  
                case IWebviewStateListener.ON_WEBVIEW_READY:  
                    //准备完毕之后添加webview到显示父View中,设置排版不显示状态,避免显示webview时,html内容排版错乱问题  
                    View view = ((IWebview)pArgs).obtainApp().obtainWebAppRootView().obtainMainView();  
                    view.setVisibility(View.INVISIBLE);  
                    rootView.addView(view, 0);  
                    break;  
                case IWebviewStateListener.ON_PAGE_STARTED:  
                    break;  
                case IWebviewStateListener.ON_PROGRESS_CHANGED:  
                    break;  
                case IWebviewStateListener.ON_PAGE_FINISHED:  
                    //页面加载完毕,设置显示webview  
                    app.obtainWebAppRootView().obtainMainView().setVisibility(View.VISIBLE);  
                    break;  
                }  
                return null;  
            }  
        },this);  
    }

IWebview createWebview(Activity activity,String pagePath,String basePath,String docPath,String appid, String appName,IWebviewStateListener listener)

说明:
创建一个支持5+API的Webview对象
参数:

  • activity(Activity) Activity对象
  • pagePath(String) 页面路径
  • basePath(String) 应用的默认路径
  • docPath(String) 应用的doc目录路径
  • appid(String) 应用的appid
  • appName(String) 应用名称
  • listener(IWebviewStateListener) 加载事件监听器

示例:

public void onCoreInitEnd(ICore coreHandler) {  
        //设置单页面集成的appid  
        String appid = "test1";  
        // 单页面集成时要加载页面的路径,可以是本地文件路径也可以是网络路径  
        String url = "file:///android_asset/apps/H5Plugin/www/index.html";  
        webview = SDK.createWebview(activity, url, appid, new IWebviewStateListener() {  
            @Override  
            public Object onCallBack(int pType, Object pArgs) {  
                switch (pType) {  
                case IWebviewStateListener.ON_WEBVIEW_READY:  
                    // 准备完毕之后添加webview到显示父View中,设置排版不显示状态,避免显示webview时,html内容排版错乱问题  
                    ((IWebview) pArgs).obtainFrameView().obtainMainView().setVisibility(View.INVISIBLE);  
                    SDK.attach(mRootView, ((IWebview) pArgs));  
                    break;  
                case IWebviewStateListener.ON_PAGE_STARTED:                   
                    break;  
                case IWebviewStateListener.ON_PROGRESS_CHANGED:                   
                    break;  
                case IWebviewStateListener.ON_PAGE_FINISHED:                      
                    // 页面加载完毕,设置显示webview  
                    webview.obtainFrameView().obtainMainView().setVisibility(View.VISIBLE);  
                    break;  
                }  
                return null;  
            }  
        });  

    }

IWebview createWebview(Activity activity,String pagePath,String appid,IWebviewStateListener listener)

说明:
创建一个支持5+API的Webview对象
参数:

  • activity(Activity) Activity对象
  • pagePath(String) HTML页面的路径
  • appid(String) 默认应用的APPID
  • listener(IWebviewStateListener) 页面加载事件监听器

WebApp相关方法

void stopWebApp(IApp app)

说明:
停止一个正在运行的5+WebApp
参数:
app(IApp) 正在运行的WebAPP对象

String obtainCurrentRunnbingAppId()

说明:
获取当前正在运行的5+WebApp的APPID

IApp obtainCurrentApp ()

说明:
获取到当前在前台运行的5+Webapp对象

页面相关方法

ArrayList obtainAllIWebview()

说明:
获取运行应用的Webview对象的集合

IWebview obtainWebview(String appid,String webviewId)

说明:
根据APPID和WebviewID获取到指定的Webview对象
参数:

  • appid(String) 要获取应用的APPID
  • webviewId(String) 获取应用内页面的ID

IWebview obatinFirstPage(IApp app,IWebviewStateListener listener)

说明:
获取指定应用app的首页面Iwebview对象
参数:

  • app(IApp) IApp对象
  • listener(IWebviewStateListener) 应用首页面的加载状态的监听

void closeWebView(IWebview webview)

说明:
关闭指定IWebview页面
参数:

  • webview(IWebview)

设置可使用的5+API权限

void requestAllFeature()

说明:
向5+基座申请全部扩展API调用能力
示例

public void onCoreReady(ICore coreHandler) {  
        try {  
            SDK.initSDK(coreHandler);  
            SDK.requestAllFeature();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
    }

void requestFeature(String mainFeatureName,String subFeatrureName,boolean autoBoot)

说明
单独设置可以使用的API特征名
参数

  • mainFeatureName(String) JS 特征名称
  • subFeatrureName(String) JS特征二级名称
  • autoBoot(boolean) 是否基座自动启动

示例

requestFeature("Share","share-weixin",false);

注册新扩展插件

void registerJsApi(String featureName,String className,String jsContent)

说明:
向5+SDK注册一个新的扩展API
参数:

  • featureName(String) 扩展插件的JS功能名称
  • className(String) 扩展插件的原生类名
  • jsContent(String) 扩展插件的JS代码

示例

    // 注册新的5+扩展API  
    private void regNewJsAPI() {  
        // 扩展插件的JS特征名称  
        String featureName = "T";  
        // 为处理扩展Feature的接收类全名称  
        String className = "com.HBuilder.integrate.webview.WebViewMode_FeatureImpl";  
        // content 为扩展Feature而创建的js代码  
        String content = "(function(plus){function test(){return plus.bridge.execSync('T','test',[arguments]);}plus.T = {test:test};})(window.plus);";  
        // 注册新的扩展方法  
        SDK.registerJsApi(featureName, className, content);  
    }  
1 关注 分享
Trust

要回复文章请先登录注册

哈哈098

哈哈098

Android 使用IWebview为什么报空
E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.cangyan.artplatform, PID: 10908
java.lang.NullPointerException: Attempt to invoke interface method 'void io.dcloud.common.DHInterface.IWebview.onRootViewGlobalLayout(android.view.View)' on a null object reference
at com.HBuilder.integrate.WebviewModeListener.lambda$new$115$WebviewModeListener(SDK_WebView.java:127)
at com.HBuilder.integrate.-$$Lambda$WebviewModeListener$_5Y-wM1hAaANSOfZDZD_uA7nkL4.onGlobalLayout(Unknown Source:4)
at android.view.ViewTreeObserver.dispatchOnGlobalLayout(ViewTreeObserver.java:1056)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2861)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1879)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8170)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1057)
at android.view.Choreographer.doCallbacks(Choreographer.java:875)
at android.view.Choreographer.doFrame(Choreographer.java:776)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1042)
at android.os.Handler.handleCallback(Handler.java:900)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:219)
at android.app.ActivityThread.main(ActivityThread.java:8349)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:513)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1055)
2020-10-16 10:44
6***@qq.com

6***@qq.com

离线打包widget方式集成uniapp 如果5+及页面相关的代码放在library的module中 启动后就会白屏 日志显示SDK.startWebApp返回为null 而放在application的module中就没有问题 请问这是为什么
2020-04-07 16:55
it_dyh

it_dyh

您好,请问一下主屏已经调用了webapp可以显示了。第二个屏幕要怎么调用呢。现在第二个屏幕打开网页是没问题的
2020-03-31 16:35
Activity

Activity

使用webview 集成方式,返回时,原先的界面空白,好像webview 被移除了
2019-07-17 10:59
Activity

Activity

回复 骁骑 :
你好,新打开的activity 没问题,然后我返回原先的activity ,原先的会空白页,内容没了。我用的sdk.attach()添加的
2019-07-17 10:46
l***@live.com

l***@live.com

mark
2019-05-20 11:19
shanyeWard

shanyeWard

回复 骁骑 :
直接创建IWebview,加载的界面是空白的,求解答?
2018-05-16 11:40
claudel

claudel

Android平台以WebView方式集成HTML5+SDK的方式集成,SDK初始化完成正常加载出页面后,手机与PC浏览器连接正常,能在调试界面chrome://inspect/#devices显示出现连接的手机型号,但却无法显示出手机加载页面地址和对应inspect跳转,请教一下是什么原因造成的无法加载,有什么解决方法?
补充:不用5+sdk可以正常加载显示地址和对应inspect跳转,应用的android sdk版本是19,也加了打开调试功能。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
webView.setWebContentsDebuggingEnabled(true);
}
2018-05-05 15:27
走心了老铁

走心了老铁

在html、里可以处理activity的生命周期回调么?我看SDK吧activity的一些时间都传递给EntryProxy对象了,我想知道这个EntryProxy是在什么地方使用的 ?
2017-05-31 16:09
骁骑

骁骑 (作者)

回复 1***@qq.com :
5+SDK初始化一次就行了, 在后打开的Activity里直接调用SDK的API创建IWebview对象然后布局到layout里就行
2017-05-27 15:54