Example usage for android.content.pm ResolveInfo loadIcon

List of usage examples for android.content.pm ResolveInfo loadIcon

Introduction

In this page you can find the example usage for android.content.pm ResolveInfo loadIcon.

Prototype

public Drawable loadIcon(PackageManager pm) 

Source Link

Document

Retrieve the current graphical icon associated with this resolution.

Usage

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);

}