Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
DCloud
uni-api
提交
07c6275e
U
uni-api
项目概览
DCloud
/
uni-api
通知
677
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看板
提交
07c6275e
编写于
2月 23, 2023
作者:
lizhongyi_
浏览文件
操作
浏览文件
下载
差异文件
Merge branch 'dev1' into dev
* dev1: uni-usercapturescreen Android 新增禁止截屏API # Conflicts: # pages/index/index.vue
上级
4c7038f8
60a4ccd7
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
299 addition
and
255 deletion
+299
-255
pages/index/index.vue
pages/index/index.vue
+251
-254
uni_modules/uni-usercapturescreen/package.json
uni_modules/uni-usercapturescreen/package.json
+2
-1
uni_modules/uni-usercapturescreen/utssdk/app-android/index.uts
...odules/uni-usercapturescreen/utssdk/app-android/index.uts
+46
-0
未找到文件。
pages/index/index.vue
浏览文件 @
07c6275e
<
template
>
<view
class=
"content"
>
<image
class=
"logo"
src=
"/static/logo.png"
></image>
<view
class=
"text-area"
>
<text
class=
"title"
>
{{
title
}}
</text>
</view>
<button
@
tap=
"testScreenShotListen"
>
开启截屏监听
</button>
<button
@
tap=
"testScreenShotOff"
>
关闭截屏监听
</button>
<button
@
tap=
"testGetBatteryInfo"
>
获取电池电量
</button>
<button
@
tap=
"testonMemoryWarning"
>
开启内存不足告警监听
</button>
<button
@
tap=
"testoffMemoryWarning"
>
关闭内存不足告警监听
</button>
<button
@
tap=
"testShowModal"
>
模态弹窗
</button>
<button
@
tap=
"testShowModalWithTF"
>
模态弹窗带输入框
</button>
<button
@
tap=
"testStartWifi"
>
初始化wifi模块
</button>
<button
@
tap=
"testGetWifiList"
>
获取当前wifi列表
</button>
<button
@
tap=
"testGetConnnectWifi"
>
获取当前连接的wifi
</button>
<button
@
tap=
"testConnnectWifi"
>
链接wifi
</button>
<button
@
tap=
"testStopWifi"
>
关闭wifi模块
</button>
</view>
</
template
>
<
script
>
import
showModal
from
'
@/uni_modules/uni-showmodal
'
;
export
default
{
data
()
{
return
{
title
:
'
Hello
'
,
memListener
:
null
,
}
},
onLoad
()
{
},
methods
:
{
onMemoryWarning
:
function
(
res
)
{
console
.
log
(
res
);
},
testShowModal
()
{
showModal
({
title
:
"
温馨提示
"
,
content
:
"
这是一个模态弹窗
"
,
cancelColor
:
"
#ff0000
"
,
confirmColor
:
"
#00ff00
"
,
showCancel
:
true
,
success
:
function
(
res
)
{
console
.
log
(
res
)
}
})
},
testShowModalWithTF
()
{
showModal
({
title
:
"
提示
"
,
content
:
"
带输入框的弹窗
"
,
showCancel
:
false
,
editable
:
true
,
placeholderText
:
"
请输入内容
"
,
success
:
function
(
res
)
{
console
.
log
(
res
)
}
})
},
testConnnectWifi
()
{
uni
.
connectWifi
({
maunal
:
false
,
SSID
:
"
Xiaomi_20D0
"
,
password
:
"
BBBB
"
,
complete
:
(
res
)
=>
{
console
.
log
(
res
);
}
});
},
testGetConnnectWifi
()
{
uni
.
getConnectedWifi
({
partialInfo
:
false
,
complete
:
(
res
)
=>
{
console
.
log
(
res
);
if
(
res
.
errCode
==
0
)
{
uni
.
showToast
({
icon
:
'
none
'
,
title
:
res
.
wifi
.
SSID
})
}
else
{
uni
.
showToast
({
icon
:
'
none
'
,
title
:
res
.
errMsg
})
}
}
});
},
testStartWifi
()
{
uni
.
startWifi
({
success
:
(
res
)
=>
{
console
.
log
(
"
success:
"
+
JSON
.
stringify
(
res
));
// wifi 开启成功后,注册wifi链接状态监听和wifi列表获取监听
uni
.
onGetWifiList
(
function
(
res
)
{
console
.
log
(
"
onGetWifiList
"
);
console
.
log
(
res
);
});
uni
.
onWifiConnected
(
function
(
res
)
{
console
.
log
(
"
onWifiConnected
"
);
console
.
log
(
res
);
});
uni
.
onWifiConnectedWithPartialInfo
(
function
(
res
)
{
console
.
log
(
"
onWifiConnectedWithPartialInfo
"
);
console
.
log
(
res
);
});
},
fail
:
(
res
)
=>
{
console
.
log
(
"
fail:
"
+
JSON
.
stringify
(
res
));
},
complete
:
(
res
)
=>
{
console
.
log
(
"
complete:
"
+
JSON
.
stringify
(
res
));
}
})
},
testStopWifi
()
{
uni
.
stopWifi
({
success
:
(
res
)
=>
{
console
.
log
(
"
success:
"
+
JSON
.
stringify
(
res
));
},
fail
:
(
res
)
=>
{
console
.
log
(
"
fail:
"
+
JSON
.
stringify
(
res
));
},
complete
:
(
res
)
=>
{
console
.
log
(
"
complete:
"
+
JSON
.
stringify
(
res
));
}
})
},
testGetWifiList
()
{
uni
.
getWifiList
({
success
:
(
res
)
=>
{
console
.
log
(
"
success:
"
+
JSON
.
stringify
(
res
));
},
fail
:
(
res
)
=>
{
console
.
log
(
"
fail:
"
+
JSON
.
stringify
(
res
));
},
complete
:
(
res
)
=>
{
console
.
log
(
"
complete:
"
+
JSON
.
stringify
(
res
));
}
})
},
testonMemoryWarning
()
{
uni
.
onMemoryWarning
(
this
.
onMemoryWarning
)
uni
.
showToast
({
icon
:
'
none
'
,
title
:
'
已监听,注意控制台输出
'
})
},
testoffMemoryWarning
()
{
uni
.
offMemoryWarning
(
this
.
onMemoryWarning
)
uni
.
showToast
({
icon
:
'
none
'
,
title
:
'
监听已移除
'
})
},
testScreenShotListen
()
{
var
that
=
this
;
uni
.
onUserCaptureScreen
(
function
(
res
)
{
console
.
log
(
res
);
if
(
uni
.
getSystemInfoSync
().
platform
==
"
android
"
)
{
// 除android 之外的平台,不需要判断返回状态码
if
(
res
.
errCode
==
-
1
)
{
// 启动失败
return
;
}
else
if
(
res
.
errCode
==
0
)
{
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
截屏监听已开启
'
})
}
else
{
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
捕获截屏事件
'
})
that
.
screenImage
=
res
.
image
}
}
else
{
// 除android 之外的平台,不需要判断返回状态码
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
捕获截屏事件
'
})
}
});
if
(
uni
.
getSystemInfoSync
().
platform
!=
"
android
"
)
{
// 除android 之外的平台,直接提示监听已开启
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
截屏监听已开启
'
})
}
},
testScreenShotOff
()
{
uni
.
offUserCaptureScreen
(
function
(
res
)
{
console
.
log
(
res
);
});
// 提示已经开始监听,注意观察
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
截屏监听已关闭
'
})
},
testGetBatteryInfo
()
{
uni
.
getBatteryInfo
({
success
(
res
)
{
console
.
log
(
res
);
uni
.
showToast
({
title
:
"
当前电量:
"
+
res
.
level
+
'
%
'
,
icon
:
'
none
'
});
}
})
},
}
}
</
script
>
<
style
>
.content
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
}
.logo
{
height
:
200
rpx
;
width
:
200
rpx
;
margin-top
:
200
rpx
;
margin-left
:
auto
;
margin-right
:
auto
;
margin-bottom
:
50
rpx
;
}
.text-area
{
display
:
flex
;
justify-content
:
center
;
}
.title
{
font-size
:
36
rpx
;
color
:
#8f8f94
;
}
<
template
>
<view
class=
"content"
>
<image
class=
"logo"
src=
"/static/logo.png"
></image>
<view
class=
"text-area"
>
<text
class=
"title"
>
{{
title
}}
</text>
</view>
<button
@
tap=
"testScreenShotListen"
>
开启截屏监听
</button>
<button
@
tap=
"testScreenShotOff"
>
关闭截屏监听
</button>
<button
@
tap=
"testSetUserCaptureScreen"
>
{{
setUserCaptureScreenText
}}
</button>
<button
@
tap=
"testGetBatteryInfo"
>
获取电池电量
</button>
<button
@
tap=
"testonMemoryWarning"
>
开启内存不足告警监听
</button>
<button
@
tap=
"testoffMemoryWarning"
>
关闭内存不足告警监听
</button>
<button
@
tap=
"testStartWifi"
>
初始化wifi模块
</button>
<button
@
tap=
"testGetWifiList"
>
获取当前wifi列表
</button>
<button
@
tap=
"testGetConnnectWifi"
>
获取当前连接的wifi
</button>
<button
@
tap=
"testConnnectWifi"
>
链接wifi
</button>
<button
@
tap=
"testStopWifi"
>
关闭wifi模块
</button>
</view>
</
template
>
<
script
>
export
default
{
data
()
{
return
{
title
:
'
Hello
'
,
memListener
:
null
,
setUserCaptureScreenFlag
:
true
,
setUserCaptureScreenText
:
'
禁止截屏
'
}
},
onLoad
()
{
},
methods
:
{
onMemoryWarning
:
function
(
res
){
console
.
log
(
res
);
},
testConnnectWifi
(){
uni
.
connectWifi
({
maunal
:
false
,
SSID
:
"
Xiaomi_20D0
"
,
password
:
"
BBBB
"
,
complete
:(
res
)
=>
{
console
.
log
(
res
);
}
});
},
testGetConnnectWifi
(){
uni
.
getConnectedWifi
({
partialInfo
:
false
,
complete
:(
res
)
=>
{
console
.
log
(
res
);
if
(
res
.
errCode
==
0
)
{
uni
.
showToast
({
icon
:
'
none
'
,
title
:
res
.
wifi
.
SSID
})
}
else
{
uni
.
showToast
({
icon
:
'
none
'
,
title
:
res
.
errMsg
})
}
}
});
},
testStartWifi
(){
uni
.
startWifi
({
success
:(
res
)
=>
{
console
.
log
(
"
success:
"
+
JSON
.
stringify
(
res
));
// wifi 开启成功后,注册wifi链接状态监听和wifi列表获取监听
uni
.
onGetWifiList
(
function
(
res
){
console
.
log
(
"
onGetWifiList
"
);
console
.
log
(
res
);
});
uni
.
onWifiConnected
(
function
(
res
){
console
.
log
(
"
onWifiConnected
"
);
console
.
log
(
res
);
});
uni
.
onWifiConnectedWithPartialInfo
(
function
(
res
){
console
.
log
(
"
onWifiConnectedWithPartialInfo
"
);
console
.
log
(
res
);
});
},
fail
:(
res
)
=>
{
console
.
log
(
"
fail:
"
+
JSON
.
stringify
(
res
));
},
complete
:(
res
)
=>
{
console
.
log
(
"
complete:
"
+
JSON
.
stringify
(
res
));
}
})
},
testStopWifi
()
{
uni
.
stopWifi
({
success
:(
res
)
=>
{
console
.
log
(
"
success:
"
+
JSON
.
stringify
(
res
));
},
fail
:(
res
)
=>
{
console
.
log
(
"
fail:
"
+
JSON
.
stringify
(
res
));
},
complete
:(
res
)
=>
{
console
.
log
(
"
complete:
"
+
JSON
.
stringify
(
res
));
}
})
},
testGetWifiList
()
{
uni
.
getWifiList
({
success
:(
res
)
=>
{
console
.
log
(
"
success:
"
+
JSON
.
stringify
(
res
));
},
fail
:(
res
)
=>
{
console
.
log
(
"
fail:
"
+
JSON
.
stringify
(
res
));
},
complete
:(
res
)
=>
{
console
.
log
(
"
complete:
"
+
JSON
.
stringify
(
res
));
}
})
},
testonMemoryWarning
()
{
uni
.
onMemoryWarning
(
this
.
onMemoryWarning
)
uni
.
showToast
({
icon
:
'
none
'
,
title
:
'
已监听,注意控制台输出
'
})
},
testoffMemoryWarning
(){
uni
.
offMemoryWarning
(
this
.
onMemoryWarning
)
uni
.
showToast
({
icon
:
'
none
'
,
title
:
'
监听已移除
'
})
},
testScreenShotListen
()
{
var
that
=
this
;
uni
.
onUserCaptureScreen
(
function
(
res
)
{
console
.
log
(
res
);
if
(
uni
.
getSystemInfoSync
().
platform
==
"
android
"
)
{
// 除android 之外的平台,不需要判断返回状态码
if
(
res
.
errCode
==
-
1
){
// 启动失败
return
;
}
else
if
(
res
.
errCode
==
0
){
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
截屏监听已开启
'
})
}
else
{
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
捕获截屏事件
'
})
that
.
screenImage
=
res
.
image
}
}
else
{
// 除android 之外的平台,不需要判断返回状态码
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
捕获截屏事件
'
})
}
});
if
(
uni
.
getSystemInfoSync
().
platform
!=
"
android
"
)
{
// 除android 之外的平台,直接提示监听已开启
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
截屏监听已开启
'
})
}
},
testScreenShotOff
()
{
uni
.
offUserCaptureScreen
(
function
(
res
)
{
console
.
log
(
res
);
});
// 提示已经开始监听,注意观察
uni
.
showToast
({
icon
:
"
none
"
,
title
:
'
截屏监听已关闭
'
})
},
testGetBatteryInfo
()
{
uni
.
getBatteryInfo
({
success
(
res
)
{
console
.
log
(
res
);
uni
.
showToast
({
title
:
"
当前电量:
"
+
res
.
level
+
'
%
'
,
icon
:
'
none
'
});
}
})
},
testSetUserCaptureScreen
()
{
let
flag
=
this
.
setUserCaptureScreenFlag
;
uni
.
setUserCaptureScreen
({
open
:
flag
,
success
:
(
res
)
=>
{
console
.
log
(
"
setUserCaptureScreen open:
"
+
flag
+
"
success:
"
+
JSON
.
stringify
(
res
));
},
fail
:
(
res
)
=>
{
console
.
log
(
"
setUserCaptureScreen open:
"
+
flag
+
"
fail:
"
+
JSON
.
stringify
(
res
));
},
complete
:
(
res
)
=>
{
console
.
log
(
"
setUserCaptureScreen open:
"
+
flag
+
"
complete:
"
+
JSON
.
stringify
(
res
));
}
});
uni
.
showToast
({
icon
:
"
none
"
,
title
:
this
.
setUserCaptureScreenText
});
this
.
setUserCaptureScreenFlag
=
!
this
.
setUserCaptureScreenFlag
;
if
(
this
.
setUserCaptureScreenFlag
)
{
this
.
setUserCaptureScreenText
=
'
禁止截屏
'
;
}
else
{
this
.
setUserCaptureScreenText
=
'
允许截屏
'
;
}
},
}
}
</
script
>
<
style
>
.content
{
display
:
flex
;
flex-direction
:
column
;
align-items
:
center
;
justify-content
:
center
;
}
.logo
{
height
:
200
rpx
;
width
:
200
rpx
;
margin-top
:
200
rpx
;
margin-left
:
auto
;
margin-right
:
auto
;
margin-bottom
:
50
rpx
;
}
.text-area
{
display
:
flex
;
justify-content
:
center
;
}
.title
{
font-size
:
36
rpx
;
color
:
#8f8f94
;
}
</
style
>
uni_modules/uni-usercapturescreen/package.json
浏览文件 @
07c6275e
...
...
@@ -34,7 +34,8 @@
"uni-ext-api"
:{
"uni"
:
{
"onUserCaptureScreen"
:
"onUserCaptureScreen"
,
"offUserCaptureScreen"
:
"offUserCaptureScreen"
"offUserCaptureScreen"
:
"offUserCaptureScreen"
,
"setUserCaptureScreen"
:
"setUserCaptureScreen"
}
},
"dependencies"
:
[],
...
...
uni_modules/uni-usercapturescreen/utssdk/app-android/index.uts
浏览文件 @
07c6275e
...
...
@@ -13,7 +13,17 @@ import FileObserver from "android.os.FileObserver";
import File from "java.io.File";
import Environment from "android.os.Environment";
import System from 'java.lang.System';
import WindowManager from 'android.view.WindowManager';
/**
* setUserCaptureScreen 参数定义
*/
type SetUserCaptureScreenOption = {
open: boolean;
success?: (res: UTSJSONObject) => void;
fail?: (res: UTSJSONObject) => void;
complete?: (res: UTSJSONObject) => void;
}
/**
...
...
@@ -145,5 +155,41 @@ export function offUserCaptureScreen(success: (res: any) => void) {
success({});
}
/**
* 设置是否禁止截屏
*/
export function setUserCaptureScreen(option: SetUserCaptureScreenOption) {
const res = {
errCode: 0,
errMsg: "setUserCaptureScreen:ok",
errSubject: "uni-setUserCaptureScreen"
};
UTSAndroid.getUniActivity()?.runOnUiThread(new SetUserCaptureScreenRunnable(option.open));
option.success?.(res);
option.complete?.(res);
}
class SetUserCaptureScreenRunnable extends Runnable {
/**
* true 表示禁止截屏
* false 表示允许截屏
*/
private open: boolean = false;
constructor(open: boolean) {
super();
this.open = open;
}
override run(): void {
if (this.open) {
UTSAndroid.getUniActivity()?.getWindow()?.addFlags(WindowManager.LayoutParams.FLAG_SECURE);
} else {
UTSAndroid.getUniActivity()?.getWindow()?.clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
}
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录