Android华为推送低版本兼容问题

**

Android华为推送低版本兼容问题

**

ps:本篇只适合已集成完毕华为推送sdk的开发者,在兼容上遇到的问题。
关于集成华为hms服务移动推送时遇到的问题:

第三方:

华为移动hms服务-推送服务

需求:

提高推送覆盖率

处理方案:

透传 + 自启动

权限开放:

自启动 = on

根据官方文档集成后,在华为老机型上运行时出现了崩溃.

//HuaweiApiAvailability.getInstance().resolveError(this, rstCode, REQUEST_HMS_RESOLVE_ERROR);

/**

* 代理Activity,用于弹出解决问题的引导

*/

public class HMSAgentActivityextends BaseAgentActivity {

...

@Override

protected 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 连接结果,用于解决错误和知道什么类型的错误

*/

@Override

public 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,java)