Android小功能集

jopen 10年前發布 | 21K 次閱讀 Android 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 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!