获取apk包接口
1 简介
- 接口类:
ISwanApkFetcher
- 依赖模块:
deps.business.swan.core
- 默认实现:
ISwanApkFetcher.DefaultImpl
- 是否必须实现: 否
- 可选择性依赖的实现: 无
宿主根据 pkgUri 等参数,获取 apk 包的能力接口,小程序框架获取 apk 的能力接口。
注:目前用于 接管代理小程序下载 apk 能力接口的默认实现,并将其委托给宿主进行自定义实现。
2 示例实现
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 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
|
@Service @Singleton class SwanApkFetcherImpl extends SwanWrapper implements ISwanApkFetcher {
@NonNull ApkFetchingSession querySessionByUri(@NonNull String pkgUri) { return sessionOfPkgUri; }
@Override public boolean delegateForAdDownloadByDefault() { return true; }
@Override public void addCallback(@NonNull String pkgUri, @Nullable Callback callback) { querySessionByUri(pkgUri).addCallback(callback); }
@Override public void delCallback(@NonNull String pkgUri, @Nullable Callback callback) { querySessionByUri(pkgUri).delCallback(callback); }
@Override public void status(@NonNull String pkgUri, @NonNull Params params) { querySessionByUri(pkgUri).status(params); }
@Override public void start(@NonNull String pkgUri, @NonNull Params params) { querySessionByUri(pkgUri).start(params); }
@Override public void pause(@NonNull String pkgUri, @NonNull Params params) { querySessionByUri(pkgUri).pause(params); }
@Override public void cancel(@NonNull String pkgUri, @NonNull Params params) { querySessionByUri(pkgUri).cancel(params); }
@Override public void resume(@NonNull String pkgUri, @NonNull Params params) { querySessionByUri(pkgUri).resume(params); }
@Override public void release() { } }
|
3 主要方法及参数参考
- com.baidu.swan.apps.adaptation.interfaces.apkfetcher
3.1 ISwanApkFetcher
1
| public interface ISwanApkFetcher
|
APK 取包器,小程序框架获取 apk 的能力接口
3.1.1 Nested classes
3.1.2 Public methods
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 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
|
boolean delegateForAdDownloadByDefault();
void addCallback(@NonNull String pkgUri,@Nullable Callback callback);
void delCallback(@NonNull String pkgUri,@Nullable Callback callback);
void status(@NonNull String pkgUri,@NonNull Params params);
void start(@NonNull String pkgUri,@NonNull Params params);
void pause(@NonNull String pkgUri,@NonNull Params params);
void cancel(@NonNull String pkgUri,@NonNull Params params);
void resume(@NonNull String pkgUri,@NonNull Params params);
void release();
|
3.2 ISwanApkFetcher.Callback
1
| interface ISwanApkFetcher.Callback
|
取包事件监听器
3.2.1 Public methods
1 2 3 4 5 6 7
|
void onStateChange(FetchStates state,int progress);
|
3.3 ISwanApkFetcher.FetchStates
1
| enum ISwanApkFetcher.FetchStates
|
取包事件监听器
3.3.1 Enum values
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| PENDING,
FETCHING,
FETCH_PAUSED,
FETCHED,
FETCH_FAILED,
INSTALLED,
DELETED,
FETCH_PREPARE,
WAITING,
FINISHED
|
3.4 ISwanApkFetcher.DefaultImpl
1
| class DefaultImpl extends SwanWrapper implements ISwanApkFetcher
|
默认空实现
3.4.1 Public methods
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| @Override public boolean delegateForAdDownloadByDefault(){ return false; }
@Override public void addCallback(@NonNull String pkgUri,@Nullable Callback callback){}
@Override public void delCallback(@NonNull String pkgUri,@Nullable Callback callback){}
@Override public void status(@NonNull String pkgUri,@NonNull Params params){}
@Override public void start(@NonNull String pkgUri,@NonNull Params params){}
@Override public void pause(@NonNull String pkgUri,@NonNull Params params){}
@Override public void cancel(@NonNull String pkgUri,@NonNull Params params){}
@Override public void resume(@NonNull String pkgUri,@NonNull Params params){}
@Override public void release(){}
|
3.5 Params
1
| public final class Params extends Properties<Params>
|
- ISwanApkFetcher 的可选参数容器
- 默认的可选参数字段见:{@link Keys}
- 默认的可选参数字段都有相应的同名 getter、setter 和 contains 方法
3.5.1 Nested classes
3.5.2 Public methods
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 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 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286
| @Override public Params self(){ return this; }
public Params title(String title){ return putString(Keys.TITLE,title); }
public String title(){ return getString(Keys.TITLE); }
public boolean containsTitle(){ return containsKey(Keys.TITLE); }
public Params pkgName(String pkgName){ return putString(Params.Keys.PKG_NAME,pkgName); }
public String pkgName(){ return getString(Params.Keys.PKG_NAME); }
public boolean containsPkgName(){ return containsKey(Keys.PKG_NAME); }
public Params description(String description){ return putString(Keys.DESCRIPTION,description); }
public String description(){ return getString(Keys.DESCRIPTION); }
public boolean containsDescription(){ return containsKey(Keys.DESCRIPTION); }
public Params autoInstall(Boolean autoInstall){ return putBoolean(Keys.AUTO_INSTALL,autoInstall); }
public Boolean autoInstall(){ return getBoolean(Keys.AUTO_INSTALL,false); }
public boolean containsAutoInstall(){ return containsKey(Keys.AUTO_INSTALL); }
public Params currentSwanApp(String currentSwanApp){ return putString(Keys.CURRENT_SWAN_APP,currentSwanApp); }
public String currentSwanApp(){ return getString(Keys.CURRENT_SWAN_APP); }
public boolean containsCurrentSwanApp(){ return containsKey(Keys.CURRENT_SWAN_APP); }
public Params contentDisposition(String contentDisposition){ return putString(Keys.CONTENT_DISPOSITION,contentDisposition); }
public String contentDisposition(){ return getString(Keys.CONTENT_DISPOSITION); }
public boolean containsContentDisposition(){ return containsKey(Keys.CONTENT_DISPOSITION); }
public Params mimeType(String mimeType){ return putString(Keys.MIME_TYPE,mimeType); }
public String mimeType(){ return getString(Keys.MIME_TYPE); }
public boolean containsMimeType(){ return containsKey(Keys.MIME_TYPE); }
public Params userAgent(String userAgent){ return putString(Keys.USER_AGENT,userAgent); }
public String userAgent(){ return getString(Keys.USER_AGENT); }
public boolean containsUserAgent(){ return containsKey(Keys.USER_AGENT); }
public Params contentLength(String contentLength){ return putString(Keys.CONTENT_LENGTH,contentLength); }
public String contentLength(){ return getString(Keys.CONTENT_LENGTH); }
public boolean containsContentLength(){ return containsKey(Keys.CONTENT_LENGTH); }
public Params extInfo(String extInfo){ return putString(Keys.EXT_INFO,extInfo); }
public String extInfo(){ return getString(Keys.EXT_INFO); }
public boolean containsExtInfo(){ return containsKey(Keys.EXT_INFO); }
|
3.6 Params.DefaultImpl
key 定义
3.6.1 Constants
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 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
| String _PREFIX="SwanApkFetcher.Params";
String TITLE=joinPrefix(_PREFIX,"title");
String PKG_NAME=joinPrefix(_PREFIX,"pkg_name");
String DESCRIPTION=joinPrefix(_PREFIX,"description");
String AUTO_INSTALL=joinPrefix(_PREFIX,"should_auto_install");
String CURRENT_SWAN_APP=joinPrefix(_PREFIX,"current_swan_app");
String CONTENT_DISPOSITION=joinPrefix(_PREFIX,"content_disposition");
String MIME_TYPE=joinPrefix(_PREFIX,"mime_type");
String USER_AGENT=joinPrefix(_PREFIX,"user_agent");
String CONTENT_LENGTH=joinPrefix(_PREFIX,"content_length");
String EXT_INFO=joinPrefix(_PREFIX,"ext_info");
|