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