List of usage examples for android.content.pm ResolveInfo loadIcon
public Drawable loadIcon(PackageManager pm)
From source file:com.google.android.apps.muzei.settings.SettingsChooseSourceFragment.java
public void updateSources() { mSelectedSource = null;//from w w w .j a va2 s. c o m Intent queryIntent = new Intent(ACTION_MUZEI_ART_SOURCE); PackageManager pm = getActivity().getPackageManager(); mSources.clear(); List<ResolveInfo> resolveInfos = pm.queryIntentServices(queryIntent, PackageManager.GET_META_DATA); for (ResolveInfo ri : resolveInfos) { Source source = new Source(); source.label = ri.loadLabel(pm).toString(); source.icon = new BitmapDrawable(getResources(), generateSourceImage(ri.loadIcon(pm))); source.componentName = new ComponentName(ri.serviceInfo.packageName, ri.serviceInfo.name); if (ri.serviceInfo.descriptionRes != 0) { try { Context packageContext = getActivity() .createPackageContext(source.componentName.getPackageName(), 0); Resources packageRes = packageContext.getResources(); source.description = packageRes.getString(ri.serviceInfo.descriptionRes); } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Can't read package resources for source " + source.componentName); } } Bundle metaData = ri.serviceInfo.metaData; source.color = Color.WHITE; if (metaData != null) { String settingsActivity = metaData.getString("settingsActivity"); if (!TextUtils.isEmpty(settingsActivity)) { source.settingsActivity = ComponentName .unflattenFromString(ri.serviceInfo.packageName + "/" + settingsActivity); } String setupActivity = metaData.getString("setupActivity"); if (!TextUtils.isEmpty(setupActivity)) { source.setupActivity = ComponentName .unflattenFromString(ri.serviceInfo.packageName + "/" + setupActivity); } source.color = metaData.getInt("color", source.color); try { float[] hsv = new float[3]; Color.colorToHSV(source.color, hsv); boolean adjust = false; if (hsv[2] < 0.8f) { hsv[2] = 0.8f; adjust = true; } if (hsv[1] > 0.4f) { hsv[1] = 0.4f; adjust = true; } if (adjust) { source.color = Color.HSVToColor(hsv); } if (Color.alpha(source.color) != 255) { source.color = Color.argb(255, Color.red(source.color), Color.green(source.color), Color.blue(source.color)); } } catch (IllegalArgumentException ignored) { } } mSources.add(source); } final String appPackage = getActivity().getPackageName(); Collections.sort(mSources, new Comparator<Source>() { @Override public int compare(Source s1, Source s2) { String pn1 = s1.componentName.getPackageName(); String pn2 = s2.componentName.getPackageName(); if (!pn1.equals(pn2)) { if (appPackage.equals(pn1)) { return -1; } else if (appPackage.equals(pn2)) { return 1; } } return s1.label.compareTo(s2.label); } }); redrawSources(); }
From source file:com.coinomi.wallet.ui.widget.ActivityChooserView.java
/** * Updates the buttons state./*from w w w. j a v a 2s .co m*/ */ private void updateAppearance() { // Expand overflow button. if (mAdapter.getCount() > 0) { mExpandActivityOverflowButton.setEnabled(true); } else { mExpandActivityOverflowButton.setEnabled(false); } // Default activity button. final int activityCount = mAdapter.getActivityCount(); final int historySize = mAdapter.getHistorySize(); // http://stackoverflow.com/questions/15755465/how-to-hide-the-share-action-which-use-most-icon-near-the-share-action-provide/17290249#17290249 if (false) { mDefaultActivityButton.setVisibility(VISIBLE); ResolveInfo activity = mAdapter.getDefaultActivity(); PackageManager packageManager = getContext().getPackageManager(); mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager)); if (mDefaultActionButtonContentDescription != 0) { CharSequence label = activity.loadLabel(packageManager); String contentDescription = getContext().getString(mDefaultActionButtonContentDescription, label); mDefaultActivityButton.setContentDescription(contentDescription); } } else { mDefaultActivityButton.setVisibility(View.GONE); } // Activity chooser content. if (mDefaultActivityButton.getVisibility() == VISIBLE) { mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); } else { mActivityChooserContent.setBackgroundDrawable(null); } }
From source file:com.google.android.apps.muzei.settings.ChooseSourceFragment.java
public void updateSources() { mSelectedSource = null;/*from w w w. j a v a 2s . c o m*/ Intent queryIntent = new Intent(ACTION_MUZEI_ART_SOURCE); PackageManager pm = getContext().getPackageManager(); mSources.clear(); List<ResolveInfo> resolveInfos = pm.queryIntentServices(queryIntent, PackageManager.GET_META_DATA); for (ResolveInfo ri : resolveInfos) { Source source = new Source(); source.label = ri.loadLabel(pm).toString(); source.icon = new BitmapDrawable(getResources(), generateSourceImage(ri.loadIcon(pm))); source.targetSdkVersion = ri.serviceInfo.applicationInfo.targetSdkVersion; source.componentName = new ComponentName(ri.serviceInfo.packageName, ri.serviceInfo.name); if (ri.serviceInfo.descriptionRes != 0) { try { Context packageContext = getContext() .createPackageContext(source.componentName.getPackageName(), 0); Resources packageRes = packageContext.getResources(); source.description = packageRes.getString(ri.serviceInfo.descriptionRes); } catch (PackageManager.NameNotFoundException | Resources.NotFoundException e) { Log.e(TAG, "Can't read package resources for source " + source.componentName); } } Bundle metaData = ri.serviceInfo.metaData; source.color = Color.WHITE; if (metaData != null) { String settingsActivity = metaData.getString("settingsActivity"); if (!TextUtils.isEmpty(settingsActivity)) { source.settingsActivity = ComponentName .unflattenFromString(ri.serviceInfo.packageName + "/" + settingsActivity); } String setupActivity = metaData.getString("setupActivity"); if (!TextUtils.isEmpty(setupActivity)) { source.setupActivity = ComponentName .unflattenFromString(ri.serviceInfo.packageName + "/" + setupActivity); } source.color = metaData.getInt("color", source.color); try { float[] hsv = new float[3]; Color.colorToHSV(source.color, hsv); boolean adjust = false; if (hsv[2] < 0.8f) { hsv[2] = 0.8f; adjust = true; } if (hsv[1] > 0.4f) { hsv[1] = 0.4f; adjust = true; } if (adjust) { source.color = Color.HSVToColor(hsv); } if (Color.alpha(source.color) != 255) { source.color = Color.argb(255, Color.red(source.color), Color.green(source.color), Color.blue(source.color)); } } catch (IllegalArgumentException ignored) { } } mSources.add(source); } final String appPackage = getContext().getPackageName(); Collections.sort(mSources, new Comparator<Source>() { @Override public int compare(Source s1, Source s2) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { boolean target1IsO = s1.targetSdkVersion >= Build.VERSION_CODES.O; boolean target2IsO = s2.targetSdkVersion >= Build.VERSION_CODES.O; if (target1IsO && !target2IsO) { return 1; } else if (!target1IsO && target2IsO) { return -1; } } String pn1 = s1.componentName.getPackageName(); String pn2 = s2.componentName.getPackageName(); if (!pn1.equals(pn2)) { if (appPackage.equals(pn1)) { return -1; } else if (appPackage.equals(pn2)) { return 1; } } return s1.label.compareTo(s2.label); } }); redrawSources(); }
From source file:android.support.v7.internal.widget.ActivityChooserView.java
/** * Updates the buttons state.//from w ww.jav a 2 s. c o m */ private void updateAppearance() { // Expand overflow button. if (mAdapter.getCount() > 0) { mExpandActivityOverflowButton.setEnabled(true); } else { mExpandActivityOverflowButton.setEnabled(false); } // Default activity button. final int activityCount = mAdapter.getActivityCount(); final int historySize = mAdapter.getHistorySize(); if (activityCount == 1 || activityCount > 1 && historySize > 0) { mDefaultActivityButton.setVisibility(VISIBLE); ResolveInfo activity = mAdapter.getDefaultActivity(); PackageManager packageManager = getContext().getPackageManager(); mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager)); if (mDefaultActionButtonContentDescription != 0) { CharSequence label = activity.loadLabel(packageManager); String contentDescription = getContext().getString(mDefaultActionButtonContentDescription, label); mDefaultActivityButton.setContentDescription(contentDescription); } } else { mDefaultActivityButton.setVisibility(View.GONE); } // Activity chooser content. if (mDefaultActivityButton.getVisibility() == VISIBLE) { mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); } else { mActivityChooserContent.setBackgroundDrawable(null); } }
From source file:com.actionbarsherlock.widget.ActivityChooserView.java
/** * Updates the buttons state./*from w ww. j av a2 s . c om*/ */ private void updateAppearance() { // Expand overflow button. if (mAdapter.getCount() > 0) { mExpandActivityOverflowButton.setEnabled(true); } else { mExpandActivityOverflowButton.setEnabled(false); } // Default activity button. final int activityCount = mAdapter.getActivityCount(); final int historySize = mAdapter.getHistorySize(); if (activityCount > 0 && historySize > 0) { mDefaultActivityButton.setVisibility(VISIBLE); ResolveInfo activity = mAdapter.getDefaultActivity(); PackageManager packageManager = mContext.getPackageManager(); mDefaultActivityButtonImage.setImageDrawable(activity.loadIcon(packageManager)); if (mDefaultActionButtonContentDescription != 0) { CharSequence label = activity.loadLabel(packageManager); String contentDescription = mContext.getString(mDefaultActionButtonContentDescription, label); mDefaultActivityButton.setContentDescription(contentDescription); } } else { mDefaultActivityButton.setVisibility(View.GONE); } // Activity chooser content. if (mDefaultActivityButton.getVisibility() == VISIBLE) { mActivityChooserContent.setBackgroundDrawable(mActivityChooserContentBackground); } else { mActivityChooserContent.setBackgroundDrawable(null); } }
From source file:org.sufficientlysecure.keychain.ui.DecryptListFragment.java
private void processResult(final Uri uri) { new AsyncTask<Void, Void, Void>() { @Override//ww w. ja va2s.com protected Void doInBackground(Void... params) { InputDataResult result = mInputDataResults.get(uri); Context context = getActivity(); if (context == null) { return null; } for (int i = 0; i < result.getOutputUris().size(); i++) { Uri outputUri = result.getOutputUris().get(i); if (mIconCache.containsKey(outputUri)) { continue; } OpenPgpMetadata metadata = result.mMetadata.get(i); String type = metadata.getMimeType(); Drawable icon = null; if (ClipDescription.compareMimeTypes(type, "text/plain")) { // noinspection deprecation, this should be called from Context, but not available in minSdk icon = getResources().getDrawable(R.drawable.ic_chat_black_24dp); } else if (ClipDescription.compareMimeTypes(type, "application/octet-stream")) { // icons for this are just confusing // noinspection deprecation, this should be called from Context, but not available in minSdk icon = getResources().getDrawable(R.drawable.ic_doc_generic_am); } else if (ClipDescription.compareMimeTypes(type, Constants.MIME_TYPE_KEYS)) { // noinspection deprecation, this should be called from Context, but not available in minSdk icon = getResources().getDrawable(R.drawable.ic_key_plus_grey600_24dp); } else if (ClipDescription.compareMimeTypes(type, "image/*")) { int px = FormattingUtils.dpToPx(context, 32); Bitmap bitmap = FileHelper.getThumbnail(context, outputUri, new Point(px, px)); icon = new BitmapDrawable(context.getResources(), bitmap); } if (icon == null) { final Intent intent = new Intent(Intent.ACTION_VIEW); intent.setDataAndType(outputUri, type); final List<ResolveInfo> matches = context.getPackageManager().queryIntentActivities(intent, 0); // noinspection LoopStatementThatDoesntLoop for (ResolveInfo match : matches) { icon = match.loadIcon(getActivity().getPackageManager()); break; } } if (icon != null) { mIconCache.put(outputUri, icon); } } return null; } @Override protected void onPostExecute(Void v) { InputDataResult result = mInputDataResults.get(uri); mAdapter.addResult(uri, result); } }.execute(); }
From source file:de.baumann.thema.RequestActivity.java
private Drawable getHighResIcon(PackageManager pm, ResolveInfo resolveInfo) { Resources resources;/*from ww w . ja v a2 s. c om*/ Drawable icon; try { ComponentName componentName = new ComponentName(resolveInfo.activityInfo.packageName, resolveInfo.activityInfo.name); resources = pm.getResourcesForActivity(componentName);//Get resources for the activity int iconId = resolveInfo.getIconResource();//Get the resource Id for the activity icon if (iconId != 0) { icon = resources.getDrawableForDensity(iconId, 640, null); //Loads the icon at xxhdpi resolution or lower. return icon; } return resolveInfo.loadIcon(pm); } catch (PackageManager.NameNotFoundException e) { return resolveInfo.loadIcon(pm);//If it fails return the normal icon } catch (Resources.NotFoundException e) { return resolveInfo.loadIcon(pm); } }
From source file:com.androidzeitgeist.dashwatch.dashclock.ExtensionManager.java
/** * Returns a listing of all available (installed) extensions. *///from ww w. j av a2 s.co m public List<ExtensionListing> getAvailableExtensions() { List<ExtensionListing> availableExtensions = new ArrayList<ExtensionListing>(); PackageManager pm = mApplicationContext.getPackageManager(); List<ResolveInfo> resolveInfos = pm.queryIntentServices(new Intent(DashClockExtension.ACTION_EXTENSION), PackageManager.GET_META_DATA); for (ResolveInfo resolveInfo : resolveInfos) { ExtensionListing listing = new ExtensionListing(); listing.componentName = new ComponentName(resolveInfo.serviceInfo.packageName, resolveInfo.serviceInfo.name); listing.title = resolveInfo.loadLabel(pm).toString(); Bundle metaData = resolveInfo.serviceInfo.metaData; if (metaData != null) { listing.protocolVersion = metaData.getInt("protocolVersion"); listing.worldReadable = metaData.getBoolean("worldReadable", false); listing.description = metaData.getString("description"); String settingsActivity = metaData.getString("settingsActivity"); if (!TextUtils.isEmpty(settingsActivity)) { listing.settingsActivity = ComponentName .unflattenFromString(resolveInfo.serviceInfo.packageName + "/" + settingsActivity); } } listing.icon = resolveInfo.loadIcon(pm); availableExtensions.add(listing); } return availableExtensions; }
From source file:com.saphion.stencilweather.activities.MainActivity.java
@Override public void onClick(final View view) { initiateActions(true);/*from w w w.j a v a2s. co m*/ new Handler().postDelayed(new Runnable() { @Override public void run() { switch (view.getId()) { case R.id.fab_graph: slidingLayout.setPanelState(SlidingUpPanelLayout.PanelState.EXPANDED); materialMenu.animateIconState(MaterialMenuDrawable.IconState.X); toolbar.getMenu().clear(); actionBarContent(false); toolbar.setTitle(navAdapter.getItem(navSpinner.getSelectedItemPosition())); break; case R.id.fab_map: Intent mapIntent = new Intent(MainActivity.this, MapActivity.class); mapIntent.putExtra("position", navSpinner.getSelectedItemPosition()); startActivity(mapIntent); finish(); break; case R.id.fab_share: AlertDialog.Builder mBuilder = new AlertDialog.Builder(MainActivity.this); View mView = LayoutInflater.from(MainActivity.this).inflate(R.layout.share_weather_layout, null); mBuilder.setView(mView); shareContainer = mView.findViewById(R.id.shareableContainer); final List<Drawable> packageIcons = new ArrayList<>(); final List<String> appNames = new ArrayList<>(); final List<String> packageNames = new ArrayList<>(); final List<String> classNames = new ArrayList<>(); final RecyclerView shareRecyclerView = (RecyclerView) mView.findViewById(R.id.rvWeatherShare); final View flShareableApps = mView.findViewById(R.id.flShareableApps); flShareableApps.setAlpha(0); shareRecyclerView.setVisibility(View.VISIBLE); new AsyncTask<Void, Void, Void>() { @Override protected Void doInBackground(Void... voids) { Intent sendIntent = new Intent(); sendIntent.setAction(Intent.ACTION_SEND); sendIntent.setType("image/jpeg"); List<ResolveInfo> resolveInfoList = getPackageManager() .queryIntentActivities(sendIntent, 0); Collections.sort(resolveInfoList, new ResolveInfo.DisplayNameComparator(getPackageManager())); for (ResolveInfo resolveInfo : resolveInfoList) { Drawable icon = resolveInfo.loadIcon(getPackageManager()); String name = resolveInfo.loadLabel(getPackageManager()).toString(); packageIcons.add(icon); appNames.add(name); packageNames.add(resolveInfo.activityInfo.packageName); classNames.add(resolveInfo.activityInfo.name); } return null; } @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); ShareItemViewAdapter shareAdapter = new ShareItemViewAdapter(MainActivity.this, packageIcons, appNames, packageNames, classNames); LinearLayoutManager layoutManager = new LinearLayoutManager(MainActivity.this); layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); shareRecyclerView.setLayoutManager(layoutManager); shareRecyclerView.setAdapter(shareAdapter); YoYo.with(Techniques.SlideInDown).duration(500).interpolate(new OvershootInterpolator()) .playOn(flShareableApps); } }.execute(); mShareDialog = mBuilder.create(); mShareDialog.getWindow().setWindowAnimations(R.style.DialogAnimation); mShareDialog.getWindow() .setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); mShareDialog.show(); break; } } }, 200); }