快捷方式引起的home键问题

来源:互联网 发布:js调用身份证读取器 编辑:程序博客网 时间:2024/06/07 19:49
我根据网上的代码写了一个建立快捷方式的方法,可以正常实现桌面快捷方式的功能,但是我如果从桌面的快捷方式点击进入软件后,再按home键返回到桌面,然后点击“全部程序”在这里找到程序的快捷方式点击进入程序后,它就把这个软件有重新启动了一次;或者 我从 所有程序中  打开,按home键之后,再从快捷方式 点,也会重启。
不知道怎么解决,求高手指点。
以下是我写的建立快捷方式的代码,请各位高手帮忙看下:

public static boolean addShortcut(Context context, String pkg) {
  Log.i("i", "dddssss");
  // 快捷方式名
  String title = context.getString(R.string.app_name);
  // MainActivity完整名
  String mainAct = null;
  // 应用图标标识
  int iconIdentifier = 0;
  // 根据包名寻找MainActivity
  PackageManager pkgMag = context.getPackageManager();
  Log.i("ii", "pkgMag:  "+pkgMag);
  System.out.println("pkgMag:  "+pkgMag);
  Intent queryIntent = new Intent(Intent.ACTION_MAIN, null);
  //queryIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
  //queryIntent.setClass(context, context.getClass());
  queryIntent.addCategory(Intent.CATEGORY_LAUNCHER);
  List<ResolveInfo> list = pkgMag.queryIntentActivities(queryIntent,
    PackageManager.GET_ACTIVITIES);
  for (int i = 0; i < list.size(); i++) {
   ResolveInfo info = list.get(i);
   if (info.activityInfo.packageName.equals(pkg)) {
    title = info.loadLabel(pkgMag).toString();
    mainAct = info.activityInfo.name;
    iconIdentifier = info.activityInfo.applicationInfo.icon;
    break;
   }
  }
  if (mainAct == null) {
   // 没有启动类
   return false;
  }
  Intent shortcut = new Intent(
    "com.android.launcher.action.INSTALL_SHORTCUT");
  //shortcut.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
  // 快捷方式的名称
  shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);
    ComponentName comp = new ComponentName(pkg, mainAct);
  shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(
    Intent.ACTION_MAIN).setComponent(comp));
  
  shortcut.putExtra("duplicate", false);

  // 快捷方式的图标
  Context pkgContext = null;
  if (context.getPackageName().equals(pkg)) {
   pkgContext = context;
  } else {
   // 创建第三方应用的上下文环境,为的是能够根据该应用的图标标识符寻找到图标文件。
   try {
    pkgContext = context.createPackageContext(pkg,
      Context.CONTEXT_IGNORE_SECURITY
        | Context.CONTEXT_INCLUDE_CODE);
   } catch (NameNotFoundException e) {
    e.printStackTrace();
   }
  }
  if (pkgContext != null) {
   ShortcutIconResource iconRes = Intent.ShortcutIconResource
     .fromContext(pkgContext, iconIdentifier);
   shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
  }
  // 发送广播,让接收者创建快捷方式
  // 需权限<uses-permission
  // android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
  context.sendBroadcast(shortcut);
  return true;
 }


   
      
Manifest里面也添加了权限:<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />

 

我看UC浏览器和360手机卫士的两个快捷方式都是只开启一次软件的,我这怎么就开启两次软件了呢,求高手解决啊!谢谢各位啦!
原创粉丝点击