Android小功能集
避免我們的應用出現在最近任務欄(注:不是任務管理器)中出現
<!-- 添加屬性 --> android:excludeFromRecents="true"
獲取手機上的安裝的所有Home類別應用
// private List<String> getHomes() { // List<String> packages = new ArrayList<String>(); // PackageManager packageManager = mservice.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){ // packages.add(info.activityInfo.packageName); // } // return packages; // }
監聽Home鍵,有需要的時候可以用用
HomeKeyEventBroadCastReceiver receiver = new HomeKeyEventBroadCastReceiver(); registerReceiver(receiver, new IntentFilter( Intent.ACTION_CLOSE_SYSTEM_DIALOGS));
public class HomeKeyEventBroadCastReceiver extends BroadcastReceiver{ static final String TAG = "HomeKeyEventBroadCastReceiver"; static final String SYSTEM_REASON = "reason"; static final String SYSTEM_HOME_KEY = "homekey";//home key static final String SYSTEM_RECENT_APPS = "recentapps";//long home key @Override public void onReceive(Context context, Intent intent) { String action = intent.getAction(); if (action.equals(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)) { String reason = intent.getStringExtra(SYSTEM_REASON); if (reason != null) { if (reason.equals(SYSTEM_HOME_KEY)) { // home key處理點 String pk = getCurrentPk(context); Log.i(TAG, "pk:"+pk); Log.i(TAG, "HOME KEY"); } else if (reason.equals(SYSTEM_RECENT_APPS)) { // long home key處理點 Log.i(TAG, "LONG HOME KEY"); } } } } private String getCurrentPk(Context context){ ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE); List<RunningTaskInfo> rti = mActivityManager.getRunningTasks(1); return rti.get(0).topActivity.getPackageName(); } }
在新版本中創建一個Receiver接收手機應用的安裝和卸載(可以監聽到舊版本的卸載)
public class PkInstallReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.PACKAGE_ADDED" )) { String packageName = intent.getDataString().substring(8); System. out.println( "安裝:" +packageName + "包名的程序" ); } //接收卸載廣播 if (intent.getAction().equals("android.intent.action.PACKAGE_REMOVED" )) { String packageName = intent.getDataString().substring(8); System. out.println( "卸載:" + packageName + "包名的程序" ); Intent newIntent = new Intent(); newIntent.setClassName(packageName,packageName+ ".AutoStartProTestActivity" ); newIntent.setAction( "android.intent.action.MAIN"); newIntent.addCategory( "android.intent.category.LAUNCHER" ); newIntent.setFlags(Intent. FLAG_ACTIVITY_NEW_TASK); context.startActivity(newIntent); } } } AndroidManifest.xml進行配置 //receiver <receiver android:name="com.justsy.lpi.receiver.PkInstallReceiver" android:label=" @string/app_name"> <intent-filter> <action android:name="android.intent.action.PACKAGE_ADDED" /> <action android:name="android.intent.action.PACKAGE_REMOVED" /> <data android:scheme="package" /> </intent-filter> </receiver> //permission <uses-permission android:name= "android.permission.RESTART_PACKAGES" /> <uses-permission android:name= "android.permission.RECEIVE_BOOT_COMPLETED" />
本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!