h5+关于activityResult回调问题

项目有h5+和android一起开发,android端主要是一个框架,具体界面和功能都是h5实现

在调用系统相机的时候,需要一个是确定和取消的回调,直接上代码

1、在这个类中有一个方法

/**
 * demo为以WebApp方式集成5+ sdk */
public class SDK_WebApp extends Activity {
2、这个方法必须要有
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    mEntryProxy.onActivityExecute(this, SysEventType.onActivityResult, new Object[]{requestCode, resultCode, data});
}

3、在这个插件功能类中

public class CameraWaterMark extends StandardFeature {

    private static final int TAKE_PHOTO_REQUEST_CODE = 1;
    private int startCameraCount = 0;
    private CreatWaterService c;
    private Activity activity;
    //    private File pic;
    public static int MAX_DIM = 1024;
    public static int QUALITY = 80;
    private String mCallBackID;
    private IWebview pWebview;
    private boolean isBean;

    public void onStart(Context mContext, Bundle pSavedInstanceState, String[] pRuntimeArgs) {

        /**
         * 如果需要在应用启动时进行初始化,可以继承这个方法,并在properties.xml文件的service节点添加扩展插件的注册即可触发onStart方法
         * */
    }
4、关键的代码来了

通过pWebview.obtainFrameView().obtainApp()可以获得一个IApp句柄。
IApp类存在registerSysEventListener方法,这个方法可以注册监听一些系统事件(SysEventType存在一些常用类型,比如onResume、onPause等)

final IApp _app = pWebview.obtainFrameView().obtainApp();
_app.registerSysEventListener(new ISysEventListener() {
    @Override
    public boolean onExecute(SysEventType pEventType, Object pArgs) {

        Object[] _args = (Object[]) pArgs;
        int requestCode = (Integer) _args[0];
        int resultCode = (Integer) _args[1];
        Intent data = (Intent) _args[2];
        if (pEventType == SysEventType.onActivityResult) {
            _app.unregisterSysEventListener(this, SysEventType.onActivityResult);
            if (resultCode == Activity.RESULT_OK) {
                if (requestCode == 10) {

这个SysEventType中有好多Activity的回调方法,_args有三个数就是以上,目前无法获取如果回调权限的话,如何得到申请权限的详细信息,应该有,目前没有找到,如果有知道的大神可以留言,相互学习,谢谢






猜你喜欢

转载自blog.csdn.net/androidwubo/article/details/78358180
今日推荐