国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android判斷當前棧頂Activity的包名代碼示例

2019-10-22 18:15:13
字體:
來源:轉載
供稿:網友

有時候,我們想做一個功能需求的時候,在網上找相關資料,總是找不到想要的,所以我就想到了用博客來記錄和整理自己發現的新東西,話不多說,直接擼代碼~

//判斷當前是不是桌面 public static Boolean isHome(Context context) {	String topPackageName = getTopActivityName(context);	//此處做了判斷如果得到的是null的話就返回一個true 	return topPackageName == null ? true : getHomesPackageName(context).contains(topPackageName);}//得到桌面的包名,包括第三方桌面 private static List<String> getHomesPackageName(Context context) {	List<String> homePackageNames = new ArrayList<>();	PackageManager packageManager = context.getPackageManager();	Intent intent = new Intent(Intent.ACTION_MAIN);	intent.addCategory(Intent.CATEGORY_HOME);	List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);	for (ResolveInfo info : resolveInfo) {		homePackageNames.add(info.activityInfo.packageName);	}	return homePackageNames;}//得到棧頂Activity的名字,注意此處要進行判斷,Android在5.0以后Google把getRunningTasks的方法給屏蔽掉了,所以要分開處理 private static String getTopActivityName(Context context) {	String topActivityPackageName;	ActivityManager manager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);	if (Build.VERSION.SDK_iNT >= Build.VERSION_CODES.LOLLIPOP) {		//此處要判斷用戶的安全權限有沒有打開,如果打開了就進行獲取棧頂Activity的名字的方法 		//當然,我們的要求是如果沒打開就不獲取了,要不然跳轉會影響用戶的體驗 		if (isSecurityPermissionOpen(context)) {			UsageStatsManager mUsageStatsManager = (UsageStatsManager) context.getSystemService(Context.USAGE_STATS_SERVICE);			long endTime = System.currentTimeMillis();			long beginTime = endTime - 1000 * 60 * 2;			UsageStats recentStats = null;			List<UsageStats> queryUsageStats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, beginTime, endTime);			if (queryUsageStats == null || queryUsageStats.isEmpty()) {				return null;			}			for (UsageStats usageStats : queryUsageStats) {				if (recentStats == null || recentStats.getLastTimeUsed() < usageStats.getLastTimeUsed()) {					recentStats = usageStats;				}			}			topActivityPackageName = recentStats.getPackageName();			return topActivityPackageName;		} else {			return null;		}	} else {		List<ActivityManager.RunningTaskInfo> taskInfos = manager.getRunningTasks(1);		if (taskInfos.size() > 0) 		      topActivityPackageName = taskInfos.get(0).topActivity.getPackageName(); else 		      return null;		return topActivityPackageName;	}}//判斷用戶對應的安全權限有沒有打開 private static Boolean isSecurityPermissionOpen(Context context) {	long endTime = System.currentTimeMillis();	UsageStatsManager usageStatsManager = (UsageStatsManager) context.getApplicationContext().getSystemService("usagestats");	List<UsageStats> queryUsageStats = usageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_BEST, 0, endTime);	if (queryUsageStats == null || queryUsageStats.isEmpty()) {		return false;	}	return true;}//此處是跳轉安全權限的跳轉代碼,如果你判斷用戶沒有開啟權限的話可以選擇跳轉,此處標明~~~ //Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS); //startActivity(intent);

總結

以上就是本文關于Android判斷當前棧頂Activity的包名代碼示例的全部內容,希望對大家有所幫助。感興趣的朋友可以繼續參閱本站其他相關專題,如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 重庆市| 长沙县| 阜新| 江安县| 庆阳市| 连南| 静乐县| 香河县| 舒兰市| 廉江市| 灌阳县| 类乌齐县| 邢台市| 新竹市| 织金县| 云梦县| 马山县| 天长市| 北流市| 永清县| 光泽县| 平果县| 革吉县| 丰镇市| 长岛县| 沈阳市| 鄄城县| 彝良县| 南开区| 台州市| 永顺县| 嘉鱼县| 登封市| 兴国县| 绩溪县| 河西区| 蓬溪县| 来凤县| 通化市| 宜昌市| 行唐县|