1. 程式人生 > >Android 6.0 點選跳轉到其他APP,然後立即返回的Bug處理

Android 6.0 點選跳轉到其他APP,然後立即返回的Bug處理

ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);

ComponentName cn = am.getRunningTasks(1).get(0).topActivity;

String currentPackageName = cn.getPackageName();
判斷是否處於顯示的最前端

在4.4和5.0系統上沒有出現任何問題,但是在6.0上在跳轉的時候,一直報錯,讓activity 走onresume方法,解決辦法是直接去掉不使用這兩行程式碼,即可解決!

/***

*跳轉方法(來自網路,驗證可用)

*/

private void doStartApplicationWithPackageName(String packagename) {

    // 通過包名獲取此APP詳細資訊,包括Activities、services、versioncode、name等等
PackageInfo packageinfo = null;
    try {
        packageinfo = mActivity.getPackageManager().getPackageInfo(packagename, 0);
} catch (PackageManager.NameNotFoundException e) {
        e.printStackTrace();
} if (packageinfo == null) { return; } // 建立一個類別為CATEGORY_LAUNCHER的該包名的Intent Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null); resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER); resolveIntent.setPackage(packageinfo.packageName); // 通過getPackageManager()的queryIntentActivities方法遍歷
List<ResolveInfo> resolveinfoList = mActivity.getPackageManager() .queryIntentActivities(resolveIntent, 0); ResolveInfo resolveinfo = resolveinfoList.iterator().next(); if (resolveinfo != null) { // packagename = 引數packname String packageName = resolveinfo.activityInfo.packageName; // 這個就是我們要找的該APP的LAUNCHER的Activity[組織形式:packagename.mainActivityname] String className = resolveinfo.activityInfo.name; // LAUNCHER Intent Intent intent = new Intent(Intent.ACTION_MAIN); intent.addCategory(Intent.CATEGORY_LAUNCHER); // 設定ComponentName引數1:packagename引數2:MainActivity路徑 ComponentName cn = new ComponentName(packageName, className); intent.setComponent(cn); mActivity.startActivity(intent); } }