private void startApp(ApplicationIcon ai, Context context) { try { Intent appLaunch = new Intent(); appLaunch.setClassName(ai.getPackageName(), ai.getActivityName()); appLaunch.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(appLaunch); if (ctx instanceof HomeActivity) { ((HomeActivity) ctx).resetState(); // Self explanatory } } catch (Exception e) { Toast.makeText(context, "Couldn't start this app!", Toast.LENGTH_SHORT).show(); } }
// Set up specific customIcon with data @Override public void onBindViewHolder(AppIconHolder viewHolder, int i) { final ApplicationIcon ai = apps.get(i); // Set title viewHolder.title.setText(ai.getName()); // Set customIcon RelativeLayout.LayoutParams rllp = new RelativeLayout.LayoutParams((int) iconSize, (int) iconSize); rllp.addRule(RelativeLayout.CENTER_HORIZONTAL); viewHolder.icon.setLayoutParams(rllp); viewHolder.icon.setTag(ai); viewHolder.icon.setImageDrawable(null); if (!drawableMap.containsKey(ai)) { cacheEntry(ai, viewHolder.icon); } else { viewHolder.icon.setImageDrawable(drawableMap.get(ai)); } // Set launch viewHolder.mainView.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { startApp(ai, v.getContext()); } }); // Set drag option viewHolder.mainView.setOnLongClickListener( new View.OnLongClickListener() { @Override public boolean onLongClick(View v) { // Start drag ClipData cd = ClipData.newPlainText("description", "Passing app customIcon"); v.startDrag(cd, new View.DragShadowBuilder(v.findViewById(R.id.appIconImage)), ai, 0); return true; } }); }