demo.java 11.1 KB
Newer Older
Utopia&&for free's avatar
Utopia&&for free 已提交
1
/*
Utopia&&for free's avatar
Utopia&&for free 已提交
2 3 4
 * Copyright (c) Huawei Technologies Co., Ltd. 2012-2019. All righ
 */
package com.huawei.android.dynamicfeaturesplit; 
Utopia&&for free's avatar
Utopia&&for free 已提交
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
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;
Utopia&&for free's avatar
Utopia&&for free 已提交
25 26

import com.huawei.hms.feature.tasks.FeatureTask;
Utopia&&for free's avatar
Utopia&&for free 已提交
27 28 29
import com.huawei.hms.feature.tasks.listener.OnFeatureCompleteLis
import com.huawei.hms.feature.tasks.listener.OnFeatureFailureList
import com.huawei.hms.feature.tasks.listener.OnFeatureSuccessList
Utopia&&for free's avatar
Utopia&&for free 已提交
30
/**
Utopia&&for free's avatar
Utopia&&for free 已提交
31 32
 * Sample entry.
 */
Utopia&&for free's avatar
Utopia&&for free 已提交
33
public class SampleEntry extends Activity {
Utopia&&for free's avatar
Utopia&&for free 已提交
34
    private ProgressBar progressBar;
Utopia&&for free's avatar
Utopia&&for free 已提交
35

Utopia&&for free's avatar
Utopia&&for free 已提交
36 37 38 39 40
    private static final String TAG = SampleEntry.class.getSimple 
    private FeatureInstallManager mFeatureInstallManager; 
    private int sessionId = 10086;
    // 安装状态监听
    private InstallStateListener mStateUpdateListener = new Insta
Utopia&&for free's avatar
Utopia&&for free 已提交
41

Utopia&&for free's avatar
Utopia&&for free 已提交
42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92
    @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
        }
    }
Utopia&&for free's avatar
Utopia&&for free 已提交
93

Utopia&&for free's avatar
Utopia&&for free 已提交
94 95 96 97 98 99 100 101 102 103 104 105 106 107 108
    @Override
    protected void onResume() {
            super.onResume();
            if (mFeatureInstallManager != null) {
            mFeatureInstallManager.registerInstallListener(mStat
            }
    @Override
    protected void onPause() {
            super.onPause();
            if (mFeatureInstallManager != null) {
            mFeatureInstallManager.unregisterInstallListener(mSt
            } 
            
            
            }
Utopia&&for free's avatar
Utopia&&for free 已提交
109 110

/**
Utopia&&for free's avatar
Utopia&&for free 已提交
111 112
 * 安装动态特性
 */
Utopia&&for free's avatar
Utopia&&for free 已提交
113
public void installFeature(View view) {
Utopia&&for free's avatar
Utopia&&for free 已提交
114 115
        if (mFeatureInstallManager == null) {
        return; }
Utopia&&for free's avatar
Utopia&&for free 已提交
116
// start install
Utopia&&for free's avatar
Utopia&&for free 已提交
117 118 119
        FeatureInstallRequest request = FeatureInstallRequest.ne
        .addModule("SplitSampleFeature01")
        .build();
Utopia&&for free's avatar
Utopia&&for free 已提交
120 121
// 添加安装监听
final FeatureTask<Integer> task = mFeatureInstallManager
Utopia&&for free's avatar
Utopia&&for free 已提交
122
        task.addOnListener(new OnFeatureSuccessListener<Integer>
Utopia&&for free's avatar
Utopia&&for free 已提交
123 124
@Override
public void onSuccess(Integer integer) {
Utopia&&for free's avatar
Utopia&&for free 已提交
125 126 127 128
        Log.d(TAG, "load feature onSuccess.session id:"
        }
        });
        task.addOnListener(new OnFeatureFailureListener<Integer>
Utopia&&for free's avatar
Utopia&&for free 已提交
129 130 131

@Override
public void onFailure(Exception exception) {
Utopia&&for free's avatar
Utopia&&for free 已提交
132 133 134 135 136 137 138 139
        if (exception instanceof FeatureInstallException
        int errorCode = ((FeatureInstallException) e
        Log.d(TAG, "load feature onFailure.errorCode
        } else {
        exception.printStackTrace();
        } }
        });
        task.addOnListener(new OnFeatureCompleteListener<Integer
Utopia&&for free's avatar
Utopia&&for free 已提交
140 141
@Override
public void onComplete(FeatureTask<Integer> featureT
Utopia&&for free's avatar
Utopia&&for free 已提交
142 143 144 145 146 147 148 149 150 151 152 153 154 155
        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");
        }
Utopia&&for free's avatar
Utopia&&for free 已提交
156 157

/**
Utopia&&for free's avatar
Utopia&&for free 已提交
158 159
 * 打开动态特性⻚页⾯面
 */
Utopia&&for free's avatar
Utopia&&for free 已提交
160 161
public void startFeature01(View view) {
// test getInstallModules
Utopia&&for free's avatar
Utopia&&for free 已提交
162 163 164 165 166 167 168 169 170 171 172
        Set<String> 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);
        } }
        }
Utopia&&for free's avatar
Utopia&&for free 已提交
173 174

/**
Utopia&&for free's avatar
Utopia&&for free 已提交
175 176
 * 中断安装特性
 */
Utopia&&for free's avatar
Utopia&&for free 已提交
177
public void abortInstallFeature(View view) {
Utopia&&for free's avatar
Utopia&&for free 已提交
178 179 180
        Log.d(TAG, "begin abort_install : " + sessionId);
        FeatureTask<Void> task = mFeatureInstallManager.abortIns
        task.addOnListener(new OnFeatureCompleteListener<Void>()
Utopia&&for free's avatar
Utopia&&for free 已提交
181 182
@Override
public void onComplete(FeatureTask<Void> featureTask
Utopia&&for free's avatar
Utopia&&for free 已提交
183 184 185 186 187 188 189 190 191 192 193 194
        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();
        } }
        } });
        }
        
Utopia&&for free's avatar
Utopia&&for free 已提交
195
/**
Utopia&&for free's avatar
Utopia&&for free 已提交
196 197 198 199
 * get install task state
 *
 * @param view the view
 */
Utopia&&for free's avatar
Utopia&&for free 已提交
200
public void getInstallState(View view) { 
Utopia&&for free's avatar
Utopia&&for free 已提交
201 202 203
        Log.d(TAG, "begin to get session state for: " + sessionI
        FeatureTask<InstallState> task = mFeatureInstallManager.
        task.addOnListener(new OnFeatureCompleteListener<Install
Utopia&&for free's avatar
Utopia&&for free 已提交
204 205
@Override
public void onComplete(FeatureTask<InstallState> fea
Utopia&&for free's avatar
Utopia&&for free 已提交
206 207 208 209 210 211 212 213 214 215 216 217 218 219
        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();
        } }
        } });
        }

Utopia&&for free's avatar
Utopia&&for free 已提交
220
/**
Utopia&&for free's avatar
Utopia&&for free 已提交
221 222 223 224
 * get states of all install tasks
 *
 * @param view the view
 */
Utopia&&for free's avatar
Utopia&&for free 已提交
225
public void getAllInstallStates(View view) {
Utopia&&for free's avatar
Utopia&&for free 已提交
226 227 228
        Log.d(TAG, "begin to get all session states.");
        FeatureTask<List<InstallState>> task = mFeatureInstallMa
        task.addOnListener(new OnFeatureCompleteListener<List<In
Utopia&&for free's avatar
Utopia&&for free 已提交
229 230
@Override
public void onComplete(FeatureTask<List<InstallState
Utopia&&for free's avatar
Utopia&&for free 已提交
231
                          
Utopia&&for free's avatar
Utopia&&for free 已提交
232
                                  Log.d(TAG, "complete to get session states.");
Utopia&&for free's avatar
Utopia&&for free 已提交
233 234 235 236 237 238 239 240 241 242 243 244 245
                                          if (featureTask.isSuccessful()) {
                                          Log.d(TAG, "succeed to get session states.")
                                          List<InstallState> 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();
        } }
        }); }

Utopia&&for free's avatar
Utopia&&for free 已提交
246
/**
Utopia&&for free's avatar
Utopia&&for free 已提交
247 248 249 250 251 252 253 254
 * 延迟安装动态特性
 */
public void delayedInstallFeature(View view) {

        List<String> features = new ArrayList<>();
        features.add("SplitSampleFeature01");
        FeatureTask<Void> task = mFeatureInstallManager.delayedI
        task.addOnListener(new OnFeatureCompleteListener<Void>()
Utopia&&for free's avatar
Utopia&&for free 已提交
255 256
@Override
public void onComplete(FeatureTask<Void> featureTask
Utopia&&for free's avatar
Utopia&&for free 已提交
257 258 259 260 261 262 263 264 265 266 267 268
        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();
        }

        } }
        }); }
Utopia&&for free's avatar
Utopia&&for free 已提交
269 270

/**
Utopia&&for free's avatar
Utopia&&for free 已提交
271 272
 * 延迟卸载特性
 */
Utopia&&for free's avatar
Utopia&&for free 已提交
273
public void delayedUninstallFeature(View view) {
Utopia&&for free's avatar
Utopia&&for free 已提交
274 275 276 277
        List<String> features = new ArrayList<>();
        features.add("SplitSampleFeature01");
        FeatureTask<Void> task = mFeatureInstallManager.delayedU
        task.addOnListener(new OnFeatureCompleteListener<Void>()
Utopia&&for free's avatar
Utopia&&for free 已提交
278 279
@Override
public void onComplete(FeatureTask<Void> featureTask
Utopia&&for free's avatar
Utopia&&for free 已提交
280 281 282 283 284 285 286 287 288 289 290 291
        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();
        } }
        } });
        }

Utopia&&for free's avatar
Utopia&&for free 已提交
292
/**
Utopia&&for free's avatar
Utopia&&for free 已提交
293 294 295 296
 * install languages
 *
 * @param view the view
 */
Utopia&&for free's avatar
Utopia&&for free 已提交
297
public void loadLanguage(View view) {
Utopia&&for free's avatar
Utopia&&for free 已提交
298 299
        if (mFeatureInstallManager == null) {
        return; }
Utopia&&for free's avatar
Utopia&&for free 已提交
300
// start install
Utopia&&for free's avatar
Utopia&&for free 已提交
301 302 303 304 305 306 307 308 309
        Set<String> 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<Integer> task = mFeatureInstallManager.insta
        task.addOnListener(new OnFeatureSuccessListener<Integer>
Utopia&&for free's avatar
Utopia&&for free 已提交
310 311
@Override
public void onSuccess(Integer result) {
Utopia&&for free's avatar
Utopia&&for free 已提交
312 313 314
        Log.d(TAG, "onSuccess callback result " + result
        } });
        task.addOnListener(new OnFeatureFailureListener<Integer>
Utopia&&for free's avatar
Utopia&&for free 已提交
315 316
@Override
public void onFailure(Exception exception) {
Utopia&&for free's avatar
Utopia&&for free 已提交
317 318 319 320 321 322 323 324
        if (exception instanceof FeatureInstallException
        Log.d(TAG, "onFailure callback "
        + ((FeatureInstallException) exception
        } else {
        Log.d(TAG, "onFailure callback ", exception)
        } }
        });
        task.addOnListener(new OnFeatureCompleteListener<Integer
Utopia&&for free's avatar
Utopia&&for free 已提交
325 326
@Override
public void onComplete(FeatureTask<Integer> task) {
Utopia&&for free's avatar
Utopia&&for free 已提交
327 328 329 330
        Log.d(TAG, "onComplete callback");
        }
        });
        {
Utopia&&for free's avatar
Utopia&&for free 已提交
331
private void makeToast(String msg) {
Utopia&&for free's avatar
Utopia&&for free 已提交
332 333
        Toast.makeText(this, msg, Toast.LENGTH_LONG).show();
        }
Utopia&&for free's avatar
Utopia&&for free 已提交
334 335


Utopia&&for free's avatar
Utopia&&for free 已提交
336 337
        
        }
Utopia&&for free's avatar
Utopia&&for free 已提交
338