2014-06-20 78 views
0

我已经在我的Android设备上安装了几个应用程序,并且我开发了一个代码来为它们创建快捷方式,除了一个应用程序外,它们都工作,但是如果手动将应用程序拖动到主屏幕上它的工作,我真的很困惑...下一个代码是我用来创建快捷方式快捷方式不在Android主屏幕上打开应用程序

try 
     { 
     //Log.i("shortcut method in androidhelper start","in the shortcutapp on create method "); 
     boolean flag =false ; 
     int app_id=-1; 
     PackageManager p = getPackageManager(); 
     Intent i = new Intent(Intent.ACTION_MAIN); 
     i.addCategory(Intent.CATEGORY_LAUNCHER); 
     List<ResolveInfo> res =p.queryIntentActivities(i,0); 
     //System.out.println("the res size is: "+res.size()); 

     for(int k=0;k<res.size();k++) 
     { 
     //Log.i("","the application name is: "+res.get(k).activityInfo.loadLabel(p)); 
     if(res.get(k).activityInfo.loadLabel(p).toString().equals("Kortext")){ 
     flag = true; 
     app_id = k; 
     break; 
     } 
     } 

     if(flag) 
     { 
     ActivityInfo ai = res.get(app_id).activityInfo; 
     Intent shortcutIntent = new Intent(); 
     shortcutIntent.setClassName(ai.packageName, ai.name); 
     shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     shortcutIntent.addCategory(Intent.ACTION_PICK_ACTIVITY); 
     Intent intent = new Intent(); 
     intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); 
     // Sets the custom shortcut's title 
     intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "Kortext"); 

     BitmapDrawable bd=(BitmapDrawable)(res.get(app_id).activityInfo.loadIcon(p).getCurrent()); 
     Bitmap newbit; 
     newbit=bd.getBitmap(); 
     intent.putExtra(Intent.EXTRA_SHORTCUT_ICON, newbit); 

     intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT"); 
     sendBroadcast(intent); 

     } 
     else 
     { 
    // throw new UserException(UserException.KErrGeneral,"Application not found"); 
     } 

     } 

     catch(ActivityNotFoundException e) 
     { 
     e.printStackTrace(); 
     //throw new UserException(UserException.KErrGsmRRNoActivityOnRadioPath,e.getMessage()); 
     } 


     catch(Exception e) 
     { 
     e.printStackTrace(); 
     //throw new UserException(UserException.KErrGeneral,e.getMessage()); 

     } 

任何想法?

回答

0

我想通了,我也不得不改变意图到新的意图(Intent.ACTION_MAIN);

相关问题