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

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

要回复文章请先登录注册

1***@qq.com

1***@qq.com

Android平台以WebView方式集成HTML5+SDK的方式集成时,SDK只能初始化一次吗?打开两个集成了SDK的activity时程序就异常退出,调试发现第二个activity打开后没有再调用初始化方法,因此webview为null,请问怎么解决?
2017-05-25 14:16
1***@qq.com

1***@qq.com

Android平台以WebView方式集成HTML5+SDK的方式集成时,SDK只能初始化一次吗?打开两个集成了SDK的activity时程序就异常退出,调试发现第二个activity打开后没有再调用初始化方法,因此webview为null,请问怎么解决?
2017-05-25 14:12
kevin_liao

kevin_liao

请问@DCloud_SDK_骁骑 是否支持在fragment中集成5+ SDK?是否有demo例子?现在想在以前的原生项目中加入html5的项目,在起始页中是fragment实现的模块菜单。。点击进去都是fragment。。
2017-04-05 15:06
骁骑

骁骑 (作者)

回复 2***@qq.com :
这个是原生代码调用的,需要在SDK初始化之后调用,第一个参数是JS插件的名称,第二个参数是对应的原生代码的类名,第三个参数是注册的JS代码,

js代码里的plus.bridge.execSync的第一个参数就是 与registerJsApi的第一个参数的值相同
2016-12-06 14:44
2***@qq.com

2***@qq.com

regNewJsAPI 求详细代码,有例子可以参考吗,这样的文档不清不楚的
2016-12-05 09:40
d***@163.com

d***@163.com

regNewJsAPI 可以贴下这里注册的方法,在js中是如何调用的吗?
2016-12-01 16:23
骁骑

骁骑 (作者)

不可以,可以通过iWebview的obtainWebview()方法获取Webview对象
2016-11-08 15:21
l***@hotmail.com

l***@hotmail.com

您好,我想问下如果我想向webWeview对象添加addJsInterface方法可以把IWebview的对象强转成webWeview对象么去实现么?
2016-11-08 13:59
骁骑

骁骑 (作者)

回复 NoOne :
http://ask.dcloud.net.cn/article/924 Android创建最精简离线打包工程
http://ask.dcloud.net.cn/article/508 Android平台使用AndroidStudio离线打包说明
2016-10-14 17:03
NoOne

NoOne

能否增加提供AndroidStudio版的Demo工程呢?方便用AndroidStudio的小伙伴。
2016-10-12 22:08