AppBox接入文档

Android接入文档

落地页可以采用QuickInstall提供的通用页,也可以自定义托管在自己的服务器上


一、使用QuickInstall的通用页

采用https://quickinstall.cn/Trace/index/appKey/appdemo(这里换成你的appkey)/?name=zhangsan (这里可以换成自定义参数)


二、自定义

1、参考 我们的示例页

https://quickinstall.cn/sample/sample.html 修改里面的 downloadUrl 与appKey 就可以测试了

2、嵌入指南 (友情提醒:在微信浏览器直接下载会导致域名被封锁)

在html页面中嵌入JS代码:

<script src="https://battleship.oss-accelerate.aliyuncs.com/quickinstall/js/quickinstall.min.js"></script>

QuickInstall初始化:

<script> QuickInstall.init("你的APP KEY ");</script>

其他一键拉起:

<script>
      

//----------------APP打开提醒 --------------------
var openAppTimeout = 0
// 页面隐藏时触发
window.onpagehide = function () {
if (openAppTimeout) {
clearTimeout(openAppTimeout);
}
};

function visibilitychange() {
var tag = document.hidden || document.webkitHidden;
if (tag && openAppTimeout) {
clearTimeout(openAppTimeout);
}
}

// 页面的可见状态变化时,会触发
document.addEventListener('visibilitychange', visibilitychange, false);
document.addEventListener('webkitvisibilitychange', visibilitychange, false);

function download() {
//检测有没有安装APP
window.location.href = appKey + '://';
openAppTimeout = setTimeout(function () {
window.location.href = downloadUrl
}, 1000);
}

</script>

暂无

一、下载导入最新版SDK

前往下载页下载最新版的Android SDK 。前往下载SDK

也可以直接示例Demo源码。前往下载DEMO

演示demo: 下载

 

配置说明:

从下载的 AppBox-xxx.aar复制到app module目录下的libs文件夹中, 然后打开app module目录下的build.gradle配置文件,在android一栏中添加依赖:

repositories {      
flatDir {
dirs 'libs'
}
}

然后再在dependencies一栏中添加:

  implementation(name: 'AppBox-xxx', ext: 'aar')    

#如果使用EasyPermission权限需要这里加入
    // For developers using AndroidX in their applications
implementation 'pub.devrel:easypermissions:3.0.0'
// For developers using the Android Support Library
implementation 'pub.devrel:easypermissions:2.0.1'

 

二、接入网络/存储/下载权限

在 AndroidManifest.xml 文件中添加网络/下载/下载管理/安装未知来源APP 权限声明

 <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_DOWNLOAD_MANAGER" />
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

同时在兼容android 10读取文件权限 需要在 application节点加入如下代码:

 <application
......
android:requestLegacyExternalStorage="true"

三、初始化AppBox

在自定义的Application的onCreate()中初始化AppBox。 如果没有自定义Application可以参考下面示例代码自定义Application。

示例代码

在Application中调用初始化代码。

public class MainActivity extends AppCompatActivity {      ...
@Override
 public void onCreate( Bundle savedInstanceState ) {
  super.onCreate(savedInstanceState);
  AppBox.init(this ,"appxxx"); // appxx =分配到的appKey
}
 ...
}  

在AndroidManifest.xml中的activity标签下增加provider下载节点

<activity
....
</activity>
 <provider
android:name="com.zooling.appbox.AppBoxFileProvider"
android:authorities="${applicationId}.fileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/provider_paths" />
</provider> ... </application>

 

 

res目录下新建xml目录,新加文件provider_paths.xml

<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path name="external" path="" />
<external-files-path name="Download" path="" />
</paths>

 

如果下载地址非HTTPS的,需要在AndroidManifest.xml里面的application 加上 去掉ssl限制 :usesCleartextTraffic

   <application
....
....
.....
.....
...
android:usesCleartextTraffic="true"
....>

不然会出现《未知命令》下载失败的错误

 

四、显示AppBox图标,也可以使用自己的图标,调用AppBox.showBox()直接弹出列表 (默认图标大小为 64*64 )

 

         // 1.指定样式,屏幕左上为原点,x=5,y =500 ,width = heightt=0 代表默认图标大小64*64 
// AppBox.showIcon(AppBox.ICON_EVIL, 5, 500, 0, 0);
//2.指定固定样式,指定图标宽和高 ,默认大小为 64*64
// AppBox.showIcon(AppBox.ICON_FACE, 5, 500, 120, 120);
// AppBox.showIcon(AppBox.ICON_PAD1, 5, 500, 0, 0);
//3.随机样式,每次加载,换成不同
AppBox.showIcon(AppBox.ICON_RAND, 5, 500, 0, 0);
可选图标

 

 

 

六、显示AppBox

6.1 弹出APP列表

 

AppBox.showBox()

支持跳转到h5页面和直接下载到本地安装,

 

6.2 直接显示游戏图标

1.UI列表上创建一个ImageView 
final ImageView appIcon = findViewById(R.id.appIcon);

2.这个imageView点击事件: AppBox.onClickAppIcon();
appIcon.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
AppBox.onClickAppIcon();
}
}); 3.获取APP图标

AppBox.getAppIcon( new AppDiceListener() {

@Override public void onSuccess(Bitmap bitmap) { Log.d("AppBoxDemo" ,"onSuceess") ; if (bitmap != null) { appIcon.setImageBitmap(bitmap); }

});

 

 

6.3 . 如果下载中包含有下载APK的功能,那就需要申请安卓下载/安装未知来源权限, 代码如下

  //设置下载限制设置,推荐使用 EasyPermissions
AppBox.setDownPermission(new IDownPermissionCheckCallback() {
@Override
public boolean onPermissionCheck() {
if (EasyPermissions.hasPermissions(MainActivity.this, PERMISSIONS)) {
return true ;
} else {
Log.d("AppBoxDemo" ,"requestpemissions") ;
EasyPermissions.requestPermissions(MainActivity.this, "需要下载到本地的权限", REQUEST_CODE, PERMISSIONS);
}
return false;
}
});

//设置安装未知来源权限 AppBox.setRequestInstallPermission(new IRequestInstallCallback() { @Override public void request() { Uri packageURI = Uri.parse("package:" + getPackageName()); Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI); startActivityForResult(intent, 1); } }

) } /**
* 下载到本地的权限
* @param requestCode
* @param permissions
* @param grantResults
*/
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
Log.e("MainActity", "安装" + requestCode);
if (requestCode == REQUEST_CODE) {
AppBox.download();
}
} /**
* 安装未知来源权限
* @param requestCode
* @param resultCode
* @param data
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1) {
//InstallPackgeAPI28(this);
AppBox.installPackgeAPI28(MainActivity.this);
}
}
/**
* 退出操作
*/
@Override
protected void onDestroy() {
AppBox.onDestroy();
super.onDestroy();
} //设置关闭回调
AppBox.setClose(new ICloseCallback() {
@Override
public void close() {
Log.d("AppBox", "我已经关闭了");
}
});

 

 

参考

 

六、....