/* * Copyright (c) Huawei Technologies Co., Ltd. 2012-2019. All righ */ package com.huawei.android.dynamicfeaturesplit; 6​ import java.util.ArrayList; import java.util.HashSet; import java.util.List; import java.util.Locale; import java.util.Set; import android.app.Activity; import android.content.Intent; import android.content.IntentSender; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.ProgressBar; import android.widget.Toast; import com.huawei.hms.feature.install.FeatureInstallManager; import com.huawei.hms.feature.install.FeatureInstallManagerFactor import com.huawei.hms.feature.listener.InstallStateListener; import com.huawei.hms.feature.model.FeatureInstallException; import com.huawei.hms.feature.model.FeatureInstallRequest; import com.huawei.hms.feature.model.FeatureInstallSessionStatus; import com.huawei.hms.feature.model.InstallState; import com.huawei.hms.feature.tasks.FeatureTask; import com.huawei.hms.feature.tasks.listener.OnFeatureCompleteLis import com.huawei.hms.feature.tasks.listener.OnFeatureFailureList import com.huawei.hms.feature.tasks.listener.OnFeatureSuccessList /** * Sample entry. */ public class SampleEntry extends Activity { private ProgressBar progressBar; private static final String TAG = SampleEntry.class.getSimple ​ private FeatureInstallManager mFeatureInstallManager; ​ private int sessionId = 10086; // 安装状态监听 private InstallStateListener mStateUpdateListener = new Insta @Override public void onStateUpdate(InstallState state) { Log.d(TAG, "install session state " + state); if (state.status() == FeatureInstallSessionStatus.REQ try { mFeatureInstallManager.triggerUserConfirm(sta } catch (IntentSender.SendIntentException e) { e.printStackTrace(); } return; } if (state.status() == FeatureInstallSessionStatus.REQ try { mFeatureInstallManager.triggerUserConfirm(sta } catch (IntentSender.SendIntentException e) { e.printStackTrace(); } return; } if (state.status() == FeatureInstallSessionStatus.INS Log.i(TAG, "installed success ,can use new featur makeToast("installed success , can test new featu return; } if (state.status() == FeatureInstallSessionStatus.UNK Log.e(TAG, "installed in unknown status"); makeToast("installed in unknown status "); return; } if (state.status() == FeatureInstallSessionStatus.DOW long process = state.bytesDownloaded() * 100 / st Log.d(TAG, "downloading percentage: " + process) makeToast("downloading percentage: " + process); return; } if (state.status() == FeatureInstallSessionStatus.FAI Log.e(TAG, "installed failed, errorcode : " + sta makeToast("installed failed, errorcode : " + stat return; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); progressBar = findViewById(R.id.progress_bar); mFeatureInstallManager = FeatureInstallManagerFactory.cr } } @Override protected void onResume() { super.onResume(); if (mFeatureInstallManager != null) { mFeatureInstallManager.registerInstallListener(mStat } @Override protected void onPause() { super.onPause(); if (mFeatureInstallManager != null) { mFeatureInstallManager.unregisterInstallListener(mSt } } /** * 安装动态特性 */ public void installFeature(View view) { if (mFeatureInstallManager == null) { return; } // start install FeatureInstallRequest request = FeatureInstallRequest.ne .addModule("SplitSampleFeature01") .build(); // 添加安装监听 final FeatureTask task = mFeatureInstallManager task.addOnListener(new OnFeatureSuccessListener @Override public void onSuccess(Integer integer) { Log.d(TAG, "load feature onSuccess.session id:" } }); task.addOnListener(new OnFeatureFailureListener @Override public void onFailure(Exception exception) { if (exception instanceof FeatureInstallException int errorCode = ((FeatureInstallException) e Log.d(TAG, "load feature onFailure.errorCode } else { exception.printStackTrace(); } } }); task.addOnListener(new OnFeatureCompleteListener featureT if (featureTask.isComplete()) { Log.d(TAG, "complete to start install."); if (featureTask.isSuccessful()) { Integer result = featureTask.getResult() sessionId = result; Log.d(TAG, "succeed to start install. se } else { Log.d(TAG, "fail to start install."); Exception exception = featureTask.getExc exception.printStackTrace(); } } } }); Log.d(TAG, "start install func end"); } /** * 打开动态特性⻚页⾯面 */ public void startFeature01(View view) { // test getInstallModules Set moduleNames = mFeatureInstallManager.getAllI Log.d(TAG, "getInstallModules : " + moduleNames); if (moduleNames != null && moduleNames.contains("SplitSa try { startActivity(new Intent(this, Class.forName( "com.huawei.android.dynamicfeaturesplit. } catch (Exception e) { Log.w(TAG, "", e); } } } ​ /** * 中断安装特性 */ public void abortInstallFeature(View view) { Log.d(TAG, "begin abort_install : " + sessionId); FeatureTask task = mFeatureInstallManager.abortIns task.addOnListener(new OnFeatureCompleteListener() @Override public void onComplete(FeatureTask featureTask if (featureTask.isComplete()) { Log.d(TAG, "complete to abort_install."); if (featureTask.isSuccessful()) { Log.d(TAG, "succeed to abort_install."); } else { Log.d(TAG, "fail to abort_install."); Exception exception = featureTask.getExc exception.printStackTrace(); } } } }); } ​ /** * get install task state * * @param view the view */ public void getInstallState(View view) { ​ Log.d(TAG, "begin to get session state for: " + sessionI FeatureTask task = mFeatureInstallManager. task.addOnListener(new OnFeatureCompleteListener fea if (featureTask.isComplete()) { Log.d(TAG, "complete to get session state.") if (featureTask.isSuccessful()) { InstallState state = featureTask.getResu Log.d(TAG, "succeed to get session state Log.d(TAG, state.toString()); } else { Log.e(TAG, "failed to get session state. Exception exception = featureTask.getExc exception.printStackTrace(); } } } }); } ​ /** * get states of all install tasks * * @param view the view */ public void getAllInstallStates(View view) { Log.d(TAG, "begin to get all session states."); FeatureTask> task = mFeatureInstallMa task.addOnListener(new OnFeatureCompleteListener stateList = featureTask.g for (InstallState state : stateList) { Log.d(TAG, state.toString()); } } else { Log.e(TAG, "fail to get session states."); Exception exception = featureTask.getExcepti exception.printStackTrace(); } } }); } ​ /** * 延迟安装动态特性 */ public void delayedInstallFeature(View view) { ​ ​ List features = new ArrayList<>(); features.add("SplitSampleFeature01"); FeatureTask task = mFeatureInstallManager.delayedI task.addOnListener(new OnFeatureCompleteListener() @Override public void onComplete(FeatureTask featureTask if (featureTask.isComplete()) { Log.d(TAG, "complete to delayed_Install"); if (featureTask.isSuccessful()) { Log.d(TAG, "succeed to delayed_install") } else { Log.d(TAG, "fail to delayed_install."); Exception exception = featureTask.getExc exception.printStackTrace(); } } } }); } ​ /** * 延迟卸载特性 */ public void delayedUninstallFeature(View view) { List features = new ArrayList<>(); features.add("SplitSampleFeature01"); FeatureTask task = mFeatureInstallManager.delayedU task.addOnListener(new OnFeatureCompleteListener() @Override public void onComplete(FeatureTask featureTask if (featureTask.isComplete()) { Log.d(TAG, "complete to delayed_uninstall"); if (featureTask.isSuccessful()) { Log.d(TAG, "succeed to delayed_uninstall } else { Log.d(TAG, "fail to delayed_uninstall.") Exception exception = featureTask.getExc exception.printStackTrace(); } } } }); } ​ /** * install languages * * @param view the view */ public void loadLanguage(View view) { if (mFeatureInstallManager == null) { return; } // start install Set languages = new HashSet<>(); languages.add("fr-FR"); FeatureInstallRequest.Builder builder = FeatureInstallRe for (String lang : languages) { builder.addLanguage(Locale.forLanguageTag(lang)); } FeatureInstallRequest request = builder.build(); FeatureTask task = mFeatureInstallManager.insta task.addOnListener(new OnFeatureSuccessListener @Override public void onSuccess(Integer result) { Log.d(TAG, "onSuccess callback result " + result } }); task.addOnListener(new OnFeatureFailureListener @Override public void onFailure(Exception exception) { if (exception instanceof FeatureInstallException Log.d(TAG, "onFailure callback " + ((FeatureInstallException) exception } else { Log.d(TAG, "onFailure callback ", exception) } } }); task.addOnListener(new OnFeatureCompleteListener task) { Log.d(TAG, "onComplete callback"); } }); { private void makeToast(String msg) { Toast.makeText(this, msg, Toast.LENGTH_LONG).show(); } } ​