h5+android端關於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有三個數就是以上,目前無法獲取如果回調權限的話,如何得到申請權限的詳細信息,應該有,目前沒有找到,如果有知道的大神可以留言,相互學習,謝謝