doSettime(){
//启动定时任务
this.smsTitle='运行中';
//设置是否在运行中
this.isrun=!this.isrun;
if(this.isrun==false){
if(this.g_wakelock != null && this.g_wakelock.isHeld()) {
this.g_wakelock.release();
this.g_wakelock = null;
}
clearInterval(this.inTime);
this.smsTitle='获取短信';
return false;
}
const that=this;
this.inTime=setInterval(
()=>{
this.getMessage();
//this.getSmsMaxTime()
}
,300000);
},
async getMessage(){
//不同机型可能获取不全
//查看权限是否已允许
var that=this;
//判断时间在20点-8点取消获取短信
var nowHours=new Date().getHours();
if(nowHours>=18 || nowHours<=8){
return false;
}
//
//获取短信内容
var Context = plus.android.runtimeMainActivity();
var res = plus.android.invoke('android.support.v4.app.ActivityCompat', 'checkSelfPermission', Context, 'android.permission.READ_SMS');
var PERMISSIONS_STORAGE = new Array();
PERMISSIONS_STORAGE.push('android.permission.READ_SMS');
// res == -1 时为询问状态,询问时会走Show 和 Hidden
if (res != '0') {
plus.android.invoke('android.support.v4.app.ActivityCompat', 'requestPermissions', Context, PERMISSIONS_STORAGE, 1);
} else {
that.sms=[];
var main = plus.android.runtimeMainActivity();
var Uri = plus.android.importClass('android.net.Uri');
var ContactsContract = plus.android.importClass('android.provider.ContactsContract');
var uri = Uri.parse('content://sms/');
var cr = main.getContentResolver();
plus.android.importClass(cr);
var cur = cr.query(uri, null, null, null, null);
plus.android.importClass(cur);
//cur.moveToFirst();
that.count++;
that.smsTitle='运行'+that.count+'次';
while (cur.moveToNext()) {
// 时间
var index_date = cur.getColumnIndex("date");
var date = cur.getString(index_date);
//如果是原内容,就退出
if(date<=that.title){
break;
}
//类型1接收 2发送
var index_Type = cur.getColumnIndex('type');
var type = cur.getString(index_Type);
if(type!=1){
continue;
}
var index_Address = cur.getColumnIndex('address');
var address = cur.getString(index_Address);
var isAllowSms=this.allowSms.indexOf(address);
if(isAllowSms===-1){
continue;
}
//短信内容
var index_Body = cur.getColumnIndex('body');
var body = cur.getString(index_Body);
//console.log(address, body, type);
that.sms.push({
address:address,
body:body,
type:type,
date:date
})
// 收件人
// 短信内容
// 短信的类型
}
cur.close();
if(that.sms.length!=0){
var phpres=await that.$myRequest({
url:'api/user/smsAdd',
method:'POST',
data:{list:JSON.stringify(that.sms)}
});
that.title=phpres.data.data.maxtime;
}
}
}
- 发布:2021-08-23 08:20
- 更新:2021-08-23 13:44
- 阅读:1089
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: win10
HBuilderX类型: 正式
HBuilderX版本号: 3.2.2
手机系统: Android
手机系统版本号: Android 7.0
手机厂商: 小米
手机机型: 小米6,小米10s
页面类型: vue
打包方式: 云端
项目创建方式: HBuilderX
示例代码:
操作步骤:
app启动一个定时任务后,,app切换后台后,他就不运行了。只能有前台运行。
app启动一个定时任务后,,app切换后台后,他就不运行了。只能有前台运行。
预期结果:
希望app在后台也能运行,
希望app在后台也能运行,
实际结果:
现在的时候任务,把app切换到后台,就停止运行了
现在的时候任务,把app切换到后台,就停止运行了
bug描述:
app启动一个定时任务后,,app切换后台后,他就不运行了。只能有前台运行。
1 个回复
2***@qq.com (作者)
现在定时任务,去掉 async await 。然后访问接口用的Uni.request现在好像可以了。