Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-api
提交
7d61842c
U
uni-api
项目概览
DCloud
/
uni-api
通知
669
Star
23
Fork
12
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
3
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
uni-api
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
3
Issue
3
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
7d61842c
编写于
4月 28, 2024
作者:
taohebin@dcloud.io
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
update: install-apk
上级
6c0049b1
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
25 addition
and
7 deletion
+25
-7
uni_modules/uni-installApk/changelog.md
uni_modules/uni-installApk/changelog.md
+2
-0
uni_modules/uni-installApk/package.json
uni_modules/uni-installApk/package.json
+3
-2
uni_modules/uni-installApk/utssdk/app-android/index.uts
uni_modules/uni-installApk/utssdk/app-android/index.uts
+20
-5
未找到文件。
uni_modules/uni-installApk/changelog.md
浏览文件 @
7d61842c
## 1.0.5(2024-04-28)
解决Android API 24版本以下设备,安装apk失败的问题。
## 1.0.4(2023-12-08)
## 1.0.4(2023-12-08)
兼容asset目录文件的处理
兼容asset目录文件的处理
## 1.0.3(2023-10-27)
## 1.0.3(2023-10-27)
...
...
uni_modules/uni-installApk/package.json
浏览文件 @
7d61842c
{
{
"id"
:
"uni-installApk"
,
"id"
:
"uni-installApk"
,
"displayName"
:
"uni-installApk"
,
"displayName"
:
"uni-installApk"
,
"version"
:
"1.0.
4
"
,
"version"
:
"1.0.
5
"
,
"description"
:
"uni-installApk"
,
"description"
:
"uni-installApk"
,
"keywords"
:
[
"keywords"
:
[
"uni-installApk"
"uni-installApk"
...
@@ -48,7 +48,8 @@
...
@@ -48,7 +48,8 @@
"platforms"
:
{
"platforms"
:
{
"cloud"
:
{
"cloud"
:
{
"tcb"
:
"y"
,
"tcb"
:
"y"
,
"aliyun"
:
"y"
"aliyun"
:
"y"
,
"alipay"
:
"n"
},
},
"client"
:
{
"client"
:
{
"Vue"
:
{
"Vue"
:
{
...
...
uni_modules/uni-installApk/utssdk/app-android/index.uts
浏览文件 @
7d61842c
...
@@ -6,7 +6,8 @@ import File from 'java.io.File';
...
@@ -6,7 +6,8 @@ import File from 'java.io.File';
import FileProvider from 'androidx.core.content.FileProvider';
import FileProvider from 'androidx.core.content.FileProvider';
import Context from 'android.content.Context';
import Context from 'android.content.Context';
import Uri from 'android.net.Uri';
import Uri from 'android.net.Uri';
import FileOutputStream from 'java.io.FileOutputStream';
import FileOutputStream from 'java.io.FileOutputStream';
import IOException from 'java.io.IOException';
export function installApk(options : InstallApkOptions) : void {
export function installApk(options : InstallApkOptions) : void {
const context = UTSAndroid.getAppContext() as Context
const context = UTSAndroid.getAppContext() as Context
...
@@ -34,7 +35,7 @@ export function installApk(options : InstallApkOptions) : void {
...
@@ -34,7 +35,7 @@ export function installApk(options : InstallApkOptions) : void {
const apkUri = FileProvider.getUriForFile(context, authority, apkFile!!)
const apkUri = FileProvider.getUriForFile(context, authority, apkFile!!)
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
} else {
} else {
intent.setDataAndType(Uri.fromFile(apkFile!!), "application/vnd.android.package-archive");
intent.setDataAndType(Uri.fromFile(apkFile!!), "application/vnd.android.package-archive");
}
}
...
@@ -59,7 +60,7 @@ function copyAssetFileToPrivateDir(context : Context, fileName : string) : File
...
@@ -59,7 +60,7 @@ function copyAssetFileToPrivateDir(context : Context, fileName : string) : File
}
}
if (!outFile.exists()) {
if (!outFile.exists()) {
outFile.createNewFile()
outFile.createNewFile()
}
}
const inputStream = context.getAssets().open(fileName)
const inputStream = context.getAssets().open(fileName)
const outputStream = new FileOutputStream(outFile)
const outputStream = new FileOutputStream(outFile)
let buffer = new ByteArray(1024);
let buffer = new ByteArray(1024);
...
@@ -72,8 +73,13 @@ function copyAssetFileToPrivateDir(context : Context, fileName : string) : File
...
@@ -72,8 +73,13 @@ function copyAssetFileToPrivateDir(context : Context, fileName : string) : File
} while (true)
} while (true)
inputStream.close()
inputStream.close()
outputStream.close()
outputStream.close()
if (Build.VERSION.SDK_INT < 24) {
changePermissionRecursive(new File(context.getCacheDir().getPath() + "/apks/"))
}
return outFile
return outFile
} catch (e : Exception) {
} catch (e : Exception) {
e.printStackTrace()
e.printStackTrace()
...
@@ -81,3 +87,12 @@ function copyAssetFileToPrivateDir(context : Context, fileName : string) : File
...
@@ -81,3 +87,12 @@ function copyAssetFileToPrivateDir(context : Context, fileName : string) : File
return null
return null
}
}
function changePermissionRecursive(file: File){
const cmd = "chmod -R 777 " + file.getAbsolutePath()
const runtime = Runtime.getRuntime()
try {
runtime.exec(cmd)
} catch (e: IOException) {
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录