首页 > 作文

华为应用锁在哪里设置

更新时间:2023-03-05 22:07:41 阅读: 评论:0

跳水运动-怎么找话题

华为应用锁在哪里设置
2023年3月5日发(作者:情话英语)

应⽤锁之获取栈顶Activity

如何获取当前运⾏的栈顶Activity

1、在早期的安卓版本当中,我们可以使⽤ActivityManager.

getRunningTasks⽅法来获取当前运⾏栈顶程序。

Listpackages=getPackageManager().

getInstalledPackages(0);

ActivityManagermActivityManager;

mActivityManager=(ActivityManager)temService(

TY_SERVICE);

ComponentNametopActivity=mActivityManager.

getRunningTasks(1).get(0).topActivity;

StringpackageName=kageName();

需要开启这个权限:需要注意的是:在官⽅⽂档⾥⾯明确说明,该⽅法在sdk21之后就被弃⽤了。ThismethodwasdeprecatedinAPIlevel

21.所以下⾯要介绍API21之后的实现⽅式。#2、Android5.0下如何获取栈顶Activity需要使⽤的是getRunningAppProcess⽅法来实

现。完整实现的代码如下:

Stringpackname="";/*Android5.0之后获取程序锁的⽅式是不⼀样的*/

if(_INT>20){

//5.0及其以后的版本

Listtasks=ningAppProcess();

if(null!=tasks&&()>0){

packname=(0).processName;

}

}el{

//5.0之前

//获取正在运⾏的任务栈(⼀个应⽤程序占⽤⼀个任务栈)最近使⽤的任务栈会在最前⾯

//1表⽰给集合设置的最⼤容量Listinfos=ningTasks(1);

//获取最近运⾏的任务栈中的栈顶Activity(即⽤户当前操作的activity)的包名

packname=(0).kageName();

}

需要说明的是,还有⼈提到了另外⼀种实现的⽅式,和这个略微不同,据说都能在Android5.0当中实现。具体的⽅式如下:

if(_INT>21){

//5.0及其以后的版本

Listtasks=Tasks();

if(null!=tasks&&()>0){

for(ktask:tasks){

packageName=kInfo().ponent().getPackageName();

lable=getPackageManager().getApplicationLabel(getPackageManager().getApplicationInfo(packageName,

_META_DATA)).toString();//Log.i(TAG,packageName+lable);

}

}

}

el{

//5.0之前//获取正在运⾏的任务栈(⼀个应⽤程序占⽤⼀个任务栈)最近使⽤的任务栈会在最前⾯

//1表⽰给集合设置的最⼤容量

Listinfos=ningTasks(1);

//获取最近运⾏的任务栈中的栈顶Activity(即⽤户当前操作的activity)的包名

packageName=ningTasks(1).get(0).kageName();

//Log.i(TAG,packageName);

}

另外还有⼀种⽅式,⼤家可以看⼀看,不过整个第⼆种都⽤的不多,所以⼤家也没必要深究。

publicvoidupdateServiceNotification(Stringmessage){

if(!fBoolean(this,OUND,true))

return;

Stringtitle=fString(this,T,"");

Notificationn=newNotification(_default_avatar,

title,tTimeMillis());

=_ONGOING_EVENT|_NO_CLEAR;

IntentnotificationIntent=newIntent(this,);

gs(_ACTIVITY_CLEAR_TOP);

tIntent=ivity(this,0,notificationIntent,

_UPDATE_CURRENT);

estEventInfo(this,title,message,tIntent);

startForeground(SERVICE_NOTIFICATION,n);

}

RunnablemonitorStatus=newRunnable(){

publicvoidrun(){

try{

L.i("monitorStatusisrunning..."+mPackageName);

Callbacks(monitorStatus);

//如果在后台运⾏并且连接上了

if(!isAppOnForeground()){

L.i("appruninbackground...");

//

if(isAuthenticated())//不判断是否连接上了。

updateServiceNotification(getString(_bg_ticker));

return;//服务已在前台运⾏,可以停⽌重复执⾏此任务

}

el{

stopForeground(true);

}

layed(monitorStatus,1000L);

}catch(Exceptione){

tackTrace();

L.i("monitorStatus:"+sage());

}

}

}

在后来的Android5.1当中上述⽅法貌似都不能实现了,这是⾕歌出于对⽤户隐私的保护⽽采取的措施。

3、Android5.1及以上的实现⽅式使⽤的⽅法是:

sageStats

要使⽤这个⽅法,需要在⼿机设置中开启该应⽤的这个权限。⾸先需要在当中加⼊下⾯的权限:同时在⼿机当中也需要⽤户⼿动开

启该权限的开关。否则将不能获取当前运⾏的应⽤。实现的核⼼代码如下:

privateStringgetRunningApp(){

longts=tTimeMillis();

ListqueryUsageStats=sageStats(

AL_BEST,ts-2000,ts);

if(queryUsageStats==null||y()){

returnnull;

}

UsageStatsrecentStats=null;

for(UsageStatsusageStats:queryUsageStats){

if(recentStats==null||

tTimeUd()

recentStats=usageStats;

}

}

kageName();

}

使⽤这个⽅法还有两点需要加以注意:

1、⾸先要判断应⽤是否已经获取到UsageState的权限,如果已经获取,不⽤做别的操作。

2、应⽤没获取权限,应当给出⼀个跳转的⽅式,直接跳到该设置的页⾯。针对这两个问题,下⾯将给出是否有权限和页⾯跳转的代码:

//判断调⽤该设备中“有权查看使⽤权限的应⽤”这个选项的APP有没有打开

privatebooleanisNoSwitch(){

longts=tTimeMillis();

UsageStatsManagerusageStatsManager=(UsageStatsManager)

getApplicationContext().getSystemService("usagestats");

ListqueryUsageStats=sageStats(

AL_BEST,0,ts);

if(queryUsageStats==null||y()){

returnfal;

}

returntrue;

}

//然后就是跳转的代码了:

if(isNoOption()){

lickListener(newOnClickListener(){

@Override

publicvoidonClick(Viewv){

Intentintent=newIntent(_USAGE_ACCESS_SETTINGS);

startActivity(intent);

}

});

⽬前⼏乎所有的应⽤锁都采⽤的第3和第1的⽅式来实现,需要加⼀个判断当前版本号的语句。在5.1之后我还没有找到别的实现⽅式,如果⼤家有

什么更好的实现⽅式,欢迎留⾔讨论。⼀个简单的应⽤锁实现,能够在安卓5.1之后的系统完美运⾏。

本文发布于:2023-03-05 22:07:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/1678025261150274.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:华为应用锁在哪里设置.doc

本文 PDF 下载地址:华为应用锁在哪里设置.pdf

下一篇:返回列表
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 站长QQ:55-9-10-26 专利检索|