欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android判斷當(dāng)前棧頂Activity的包名代碼示例

 更新時(shí)間:2018年02月11日 09:47:26   作者:KevinMoJ  
這篇文章主要介紹了Android判斷當(dāng)前棧頂Activity的包名代碼示例,分享了相關(guān)代碼,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下

有時(shí)候,我們想做一個(gè)功能需求的時(shí)候,在網(wǎng)上找相關(guān)資料,總是找不到想要的,所以我就想到了用博客來記錄和整理自己發(fā)現(xiàn)的新東西,話不多說,直接擼代碼~

//判斷當(dāng)前是不是桌面 
public static Boolean isHome(Context context) {
	String topPackageName = getTopActivityName(context);
	//此處做了判斷如果得到的是null的話就返回一個(gè)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的名字,注意此處要進(jìn)行判斷,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) {
		//此處要判斷用戶的安全權(quán)限有沒有打開,如果打開了就進(jìn)行獲取棧頂Activity的名字的方法 
		//當(dāng)然,我們的要求是如果沒打開就不獲取了,要不然跳轉(zhuǎn)會(huì)影響用戶的體驗(yàn) 
		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;
	}
}
//判斷用戶對(duì)應(yīng)的安全權(quán)限有沒有打開 
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;
}
//此處是跳轉(zhuǎn)安全權(quán)限的跳轉(zhuǎn)代碼,如果你判斷用戶沒有開啟權(quán)限的話可以選擇跳轉(zhuǎn),此處標(biāo)明~~~ 
//Intent intent = new Intent(Settings.ACTION_USAGE_ACCESS_SETTINGS); 
//startActivity(intent);

總結(jié)

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

相關(guān)文章

  • Android 自定義view實(shí)現(xiàn)TopBar效果

    Android 自定義view實(shí)現(xiàn)TopBar效果

    這篇文章主要為大家詳細(xì)介紹了Android 自定義view實(shí)現(xiàn)TopBar效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Android手勢(shì)識(shí)別功能

    Android手勢(shì)識(shí)別功能

    這篇文章主要為大家詳細(xì)介紹了Android手勢(shì)識(shí)別功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-01-01
  • Flutter啟動(dòng)頁(閃屏頁)的具體實(shí)現(xiàn)及原理詳析

    Flutter啟動(dòng)頁(閃屏頁)的具體實(shí)現(xiàn)及原理詳析

    這篇文章主要給大家介紹了關(guān)于Flutter啟動(dòng)頁(閃屏頁)的具體實(shí)現(xiàn)及原理的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用Flutter具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Android 阿里云OSS文件上傳的實(shí)現(xiàn)示例

    Android 阿里云OSS文件上傳的實(shí)現(xiàn)示例

    這篇文章主要介紹了Android 阿里云OSS文件上傳的實(shí)現(xiàn)示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Android實(shí)現(xiàn)聲音采集回聲與回聲消除

    Android實(shí)現(xiàn)聲音采集回聲與回聲消除

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)聲音采集回聲與回聲消除,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Android自動(dòng)編輯文本框(AutoCompleteTextView)使用方法詳解

    Android自動(dòng)編輯文本框(AutoCompleteTextView)使用方法詳解

    這篇文章主要為大家詳細(xì)介紹了Android自動(dòng)編輯文本框AutoCompleteTextView的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-02-02
  • Android動(dòng)態(tài)更新Menu菜單的實(shí)現(xiàn)過程

    Android動(dòng)態(tài)更新Menu菜單的實(shí)現(xiàn)過程

    菜單是用戶界面中最常見的元素之一,使用非常頻繁,下面這篇文章主要給大家介紹了關(guān)于Android動(dòng)態(tài)更新Menu菜單的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-09-09
  • Android解析Intent Filter的方法

    Android解析Intent Filter的方法

    這篇文章主要介紹了Android解析Intent Filter的方法,較為詳細(xì)的分析了Intent解析的原理與相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Android使用WebSocket實(shí)現(xiàn)多人游戲

    Android使用WebSocket實(shí)現(xiàn)多人游戲

    WebSocket 是 HTML5 一種新的協(xié)議。實(shí)現(xiàn)了瀏覽器與服務(wù)器全雙工通信,下面通過本文給大家分享Android使用WebSocket實(shí)現(xiàn)多人游戲,需要的朋友參考下吧
    2017-11-11
  • Android中毛玻璃效果的兩種實(shí)現(xiàn)代碼

    Android中毛玻璃效果的兩種實(shí)現(xiàn)代碼

    這篇文章主要介紹了Android中毛玻璃效果的兩種實(shí)現(xiàn)代碼,第一種是使用JAVA算法FastBlur實(shí)現(xiàn),第二種是使用Android自帶類RenderScript 實(shí)現(xiàn),本文通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友參考下吧
    2024-08-08

最新評(píng)論