編輯:關於Android編程
在移動開發中,經常遇到要判斷當前介面是否是桌面的情況,網上有很多例子,我這裡貼出,一則方便自己日後查詢,二則方便給需要的碼友們看。
Android設備上,判斷當前介面是否桌面大致基於以下原理:android的桌面其實是由很多應用組成的,也可以稱之為桌面應用,知道這個之後問題就簡單了,首先,我們只要得到所有桌面應用的包名;然後再得到當前正在運行的應用的包名,如果當前正在運行的應用的包名是桌面應用包名中的其中一個,則介面處於桌面,否則不是。
下面貼出代碼:
/** * 獲得屬於桌面的應用的應用包名稱 * @return 返回包含所有包名的字符串列表 */ public static ArrayList好了,根據這兩個方法,就可以判斷當前介面是否是處於桌面了,如果還有其他的方法,歡迎碼友們分享出來啊!getHomePackages(Context context) { ArrayList names = new ArrayList (); PackageManager packageManager = context.getPackageManager(); //屬性 Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_HOME); List resolveInfo = packageManager.queryIntentActivities(intent,PackageManager.MATCH_DEFAULT_ONLY); for(ResolveInfo ri : resolveInfo){ names.add(ri.activityInfo.packageName); } return names; } /** * 判斷當前界面是否是桌面 */ public static boolean isHome(Context context){ ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); List rti = mActivityManager.getRunningTasks(1); String runningPackage = rti.get(0).topActivity.getPackageName(); ArrayList desktopAppPackages = getHomePackages(context); // for (int i = 0; i < desktopAppPackages.size(); i++) { // Log.e("桌面包名", desktopAppPackages.get(i) + "-----"); // } Log.e("第一個", rti.get(0).topActivity.getPackageName()); return desktopAppPackages.contains(runningPackage); }
恰逢2014 Google I/O大會,不難看出安卓在Google的推進以及本身的開放性作用下,已經快延生到生活的各個方面了,從安卓智能手機、平板,到可穿戴的Androi
前言Android應用中的APK安全性一直遭人诟病,市面上充斥著各種被破解或者漢化的應用,破解者可以非常簡單的通過破解工具就能對一個APK進行反編譯、破解、漢化等等,這樣
引言我們在android的APP開發中有時候會碰到提供一個選項列表供用戶選擇的需求,如在投票類型的項目中,我們提供一些主題給用戶選擇,每個主題有若干選項,用戶對這些主題的
一.內存洩漏概念1.什麼是內存洩漏?用動態存儲分配函數動態開辟的空間,在使用完畢後未釋放,結果導致一直占據該內存單元。直到程序結束。即所謂的內存洩漏。其實說白了就是該內存