Android华为推送低版本兼容问题
16lz
2021-01-24
**
Android华为推送低版本兼容问题
**
ps:本篇只适合已集成完毕华为推送sdk的开发者,在兼容上遇到的问题。
关于集成华为hms服务移动推送时遇到的问题:
第三方:
华为移动hms服务-推送服务
需求:
提高推送覆盖率
处理方案:
透传 + 自启动
权限开放:
自启动 = on
根据官方文档集成后,在华为老机型上运行时出现了崩溃.
//HuaweiApiAvailability.getInstance().resolveError(this, rstCode, REQUEST_HMS_RESOLVE_ERROR);
/*** 代理Activity,用于弹出解决问题的引导*/public class HMSAgentActivityextends BaseAgentActivity {...@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState); ApiClientMgr.INST.onActivityLunched(); Intent intent = getIntent(); finish(); if (intent !=null) {int rstCode = intent.getIntExtra(CONN_ERR_CODE_TAG, 0); HMSAgentLog.d("dispose code:" + rstCode);// HuaweiApiAvailability.getInstance().resolveError(this, rstCode, REQUEST_HMS_RESOLVE_ERROR); }else { HMSAgentLog.e("intent is null"); finish(); }}
定位到这行代码,当时运行的设备时cl-200 版本5.1.1
如果只是兼容不报错,注释onConnectionFailed中的以下代码即可:
ApiClientMgr.java
/*** 建立client到service的连接失败时调用* * @param result 连接结果,用于解决错误和知道什么类型的错误*/@Overridepublic void onConnectionFailed(ConnectionResult result) {timeoutHandler.removeMessages(APICLIENT_TIMEOUT_HANDLE_MSG); if (result ==null) {HMSAgentLog.e("result is null"); onConnectEnd(HMSAgent.AgentResultCode.RESULT_IS_NULL);return; }int errCode = result.getErrorCode(); HMSAgentLog.d("errCode=" + errCode +" allowResolve=" +allowResolveConnectError); if(HuaweiApiAvailability.getInstance().isUserResolvableError(errCode) &&allowResolveConnectError) {Activity activity = ActivityMgr.INST.getLastActivity(); if (activity !=null) {try {// timeoutHandler.sendEmptyMessageDelayed(APICLIENT_STARTACTIVITY_TIMEOUT_HANDLE_MSG,//APICLIENT_STARTACTIVITY_TIMEOUT);// Intent intent = new Intent(activity, HMSAgentActivity.class);// intent.putExtra(HMSAgentActivity.CONN_ERR_CODE_TAG, errCode);// intent.putExtra(BaseAgentActivity.EXTRA_IS_FULLSCREEN, UIUtils.isActivityFullscreen(activity));// activity.startActivity(intent); return; }catch (Exception e) {HMSAgentLog.e("start HMSAgentActivity exception:" + e.getMessage()); timeoutHandler.removeMessages(APICLIENT_STARTACTIVITY_TIMEOUT_HANDLE_MSG); onConnectEnd(HMSAgent.AgentResultCode.START_ACTIVITY_ERROR);return; }}else {// 当前没有界面处理不了错误 HMSAgentLog.d("no activity"); onConnectEnd(HMSAgent.AgentResultCode.NO_ACTIVITY_FOR_USE);return; }}else {//其他错误码直接透传 }onConnectEnd(errCode);}
到此兼容完毕。
希望这篇文章对大家有帮助,另外:
拒绝996
更多相关文章
- Android(安卓)Studio 导入项目和解决常见的错误
- android 输入法导致内存泄露问题
- Android定位功能
- Android中桌面图标显示通知消息的数量
- Asynchronous HTTP Requests in Android(安卓)Using Volley
- Android访问Tomcat错误以及mp3player项目乱码问题解决
- Android(安卓)启动模拟器是出现“Failed to allocate memory: 8
- android 6.0(api 23) SDK,不再提供org.apache.http.*(只保留几个
- Android(安卓)Studio 9 patch 编译错误