**

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

更多相关文章

  1. Android(安卓)Studio 导入项目和解决常见的错误
  2. android 输入法导致内存泄露问题
  3. Android定位功能
  4. Android中桌面图标显示通知消息的数量
  5. Asynchronous HTTP Requests in Android(安卓)Using Volley
  6. Android访问Tomcat错误以及mp3player项目乱码问题解决
  7. Android(安卓)启动模拟器是出现“Failed to allocate memory: 8
  8. android 6.0(api 23) SDK,不再提供org.apache.http.*(只保留几个
  9. Android(安卓)Studio 9 patch 编译错误

随机推荐

  1. android逆向工程教程
  2. Android(安卓)TextView文字过多时通过滚
  3. Android(安卓)Json解析工具类
  4. Android中Scroller类的分析
  5. Android通过tcpdump抓包
  6. android 一直在最前面的浮动窗口效果
  7. Android(安卓)实现截屏
  8. Android(安卓)Settings ——language / l
  9. 开始Android应用程序国内广告盈利模式
  10. Android庖丁解牛之WindowBackground