Example usage for android.content.pm PackageManager MATCH_DEFAULT_ONLY

List of usage examples for android.content.pm PackageManager MATCH_DEFAULT_ONLY

Introduction

In this page you can find the example usage for android.content.pm PackageManager MATCH_DEFAULT_ONLY.

Prototype

int MATCH_DEFAULT_ONLY

To view the source code for android.content.pm PackageManager MATCH_DEFAULT_ONLY.

Click Source Link

Document

Resolution and querying flag: if set, only filters that support the android.content.Intent#CATEGORY_DEFAULT will be considered for matching.

Usage

From source file:io.github.pwlin.cordova.plugins.fileopener2.FileOpener2.java

private void _open(String fileArg, String contentType, CallbackContext callbackContext) throws JSONException {
    String fileName = "";
    try {/*from www . ja  v a2 s  .c o  m*/
        CordovaResourceApi resourceApi = webView.getResourceApi();
        Uri fileUri = resourceApi.remapUri(Uri.parse(fileArg));
        fileName = this.stripFileProtocol(fileUri.toString());
    } catch (Exception e) {
        fileName = fileArg;
    }
    File file = new File(fileName);
    if (file.exists()) {
        try {
            Uri path = Uri.fromFile(file);
            Intent intent = new Intent(Intent.ACTION_VIEW);
            if (Build.VERSION.SDK_INT >= 24) {

                Context context = cordova.getActivity().getApplicationContext();
                path = FileProvider.getUriForFile(context,
                        cordova.getActivity().getPackageName() + ".opener.provider", file);
                intent.setDataAndType(path, contentType);
                intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
                intent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
                //intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

                List<ResolveInfo> infoList = context.getPackageManager().queryIntentActivities(intent,
                        PackageManager.MATCH_DEFAULT_ONLY);
                for (ResolveInfo resolveInfo : infoList) {
                    String packageName = resolveInfo.activityInfo.packageName;
                    context.grantUriPermission(packageName, path,
                            Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
                }
            } else {
                intent.setDataAndType(path, contentType);
                intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
            }
            /*
             * @see
             * http://stackoverflow.com/questions/14321376/open-an-activity-from-a-cordovaplugin
             */
            cordova.getActivity().startActivity(intent);
            //cordova.getActivity().startActivity(Intent.createChooser(intent,"Open File in..."));
            callbackContext.success();
        } catch (android.content.ActivityNotFoundException e) {
            JSONObject errorObj = new JSONObject();
            errorObj.put("status", PluginResult.Status.ERROR.ordinal());
            errorObj.put("message", "Activity not found: " + e.getMessage());
            callbackContext.error(errorObj);
        }
    } else {
        JSONObject errorObj = new JSONObject();
        errorObj.put("status", PluginResult.Status.ERROR.ordinal());
        errorObj.put("message", "File not found");
        callbackContext.error(errorObj);
    }
}

From source file:com.adguard.android.commons.BrowserUtils.java

public static void openYandexBlockingOptions(Context context) {
    Intent intent = new Intent();
    intent.setAction(YANDEX_CONTENT_BLOCKER_ACTION);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    if (list.size() > 0) {
        context.startActivity(intent);//ww w.  j  a  va  2  s .  c o  m
        return;
    }

    // For samsung-type action in Yandex browser
    intent.setAction(SAMSUNG_CONTENT_BLOCKER_ACTION);
    list = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    if (list.size() > 0) {

        ComponentName componentName = getYandexBrowser(context, SAMSUNG_CONTENT_BLOCKER_ACTION);
        if (componentName != null) {
            intent.setClassName(componentName.getPackageName(), componentName.getClassName());
        }

        context.startActivity(intent);
    }
}

From source file:lewa.support.v7.app.ActionBarActivityDelegateBase.java

private List<String> getHomes() {
    List<String> names = new ArrayList<String>();
    try {/*from   ww  w .jav  a2  s  .  c o m*/
        PackageManager packageManager = mActivity.getPackageManager();
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_HOME);
        List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(intent,
                PackageManager.MATCH_DEFAULT_ONLY);
        for (ResolveInfo ri : resolveInfo) {
            names.add(ri.activityInfo.packageName);
            System.out.println(ri.activityInfo.packageName);
        }

    } catch (Exception e) {

    }

    return names;
}

From source file:com.arthackday.killerapp.util.Util.java

public boolean isCallable(Intent intent) {
    List<ResolveInfo> list = activity.getPackageManager().queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

From source file:com.adguard.android.commons.BrowserUtils.java

public static boolean isYandexBrowserAvailable(Context context) {
    Intent intent = new Intent();
    intent.setAction(YANDEX_CONTENT_BLOCKER_ACTION);
    List<ResolveInfo> list = context.getPackageManager().queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    if (list.size() > 0) {
        for (ResolveInfo info : list) {
            if (info.activityInfo.packageName.contains(MainActivity.YANDEX)) {
                return true;
            }//from  ww w.  j a v  a 2  s.  c  o m
        }
    }

    // For samsung-type action in Yandex browser
    intent.setAction(SAMSUNG_CONTENT_BLOCKER_ACTION);
    list = context.getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    if (list.size() > 0) {
        for (ResolveInfo info : list) {
            if (info.activityInfo.packageName.contains(MainActivity.YANDEX)) {
                return true;
            }
        }
    }
    return false;
}

From source file:br.com.bioscada.apps.biotracks.fragments.ChooseActivityDialogFragment.java

/**
 * Gets the display info.//w w w.j  a  va 2 s .  co m
 */
private List<DisplayInfo> getDisplayInfos(FragmentActivity fragmentActivity) {
    List<DisplayInfo> displayInfos = new ArrayList<DisplayInfo>();
    Intent intent = ShareCompat.IntentBuilder.from(fragmentActivity).setType(IntentUtils.TEXT_PLAIN_TYPE)
            .getIntent();
    List<ResolveInfo> resolveInfos = packageManager.queryIntentActivities(intent,
            PackageManager.MATCH_DEFAULT_ONLY);
    if (resolveInfos != null && resolveInfos.size() > 0) {
        int size = resolveInfos.size();
        ResolveInfo firstResolveInfo = resolveInfos.get(0);
        for (int i = 1; i < size; i++) {
            ResolveInfo resolveInfo = resolveInfos.get(i);
            if (firstResolveInfo.priority != resolveInfo.priority
                    || firstResolveInfo.isDefault != resolveInfo.isDefault) {
                while (i < size) {
                    resolveInfos.remove(i);
                    size--;
                }
            }
        }
        if (size > 1) {
            ResolveInfo.DisplayNameComparator displayNameComparator = new ResolveInfo.DisplayNameComparator(
                    packageManager);
            Collections.sort(resolveInfos, displayNameComparator);
        }

        firstResolveInfo = resolveInfos.get(0);
        int start = 0;
        CharSequence firstLabel = firstResolveInfo.loadLabel(packageManager);
        for (int i = 1; i < size; i++) {
            if (firstLabel == null) {
                firstLabel = firstResolveInfo.activityInfo.packageName;
            }
            ResolveInfo resolveInfo = resolveInfos.get(i);
            CharSequence label = resolveInfo.loadLabel(packageManager);
            if (label == null) {
                label = resolveInfo.activityInfo.packageName;
            }
            if (label.equals(firstLabel)) {
                continue;
            }
            processGroup(resolveInfos, displayInfos, start, i - 1);
            firstResolveInfo = resolveInfo;
            firstLabel = label;
            start = i;
        }
        // Process last group
        processGroup(resolveInfos, displayInfos, start, size - 1);
    }
    return displayInfos;
}

From source file:com.tasomaniac.openwith.resolver.ResolverActivity.java

@Override
protected void onCreate(Bundle savedInstanceState) {
    final Intent intent = makeMyIntent();

    setTheme(R.style.BottomSheet_Light);
    super.onCreate(savedInstanceState);

    mPm = getPackageManager();//from  w ww  .  j a  v  a  2s .com

    mRequestedUri = intent.getData();

    boolean isCallerPackagePreferred = false;
    final String callerPackage = getCallerPackage();

    ResolveInfo lastChosen = null;
    final Cursor query = getContentResolver().query(withHost(intent.getData().getHost()), null, null, null,
            null);

    if (query != null && query.moveToFirst()) {

        final boolean isPreferred = query.getInt(query.getColumnIndex(PREFERRED)) == 1;
        final boolean isLastChosen = query.getInt(query.getColumnIndex(LAST_CHOSEN)) == 1;

        if (isPreferred || isLastChosen) {
            final String componentString = query.getString(query.getColumnIndex(COMPONENT));

            final Intent lastChosenIntent = new Intent();
            final ComponentName lastChosenComponent = ComponentName.unflattenFromString(componentString);
            lastChosenIntent.setComponent(lastChosenComponent);
            ResolveInfo ri = mPm.resolveActivity(lastChosenIntent, PackageManager.MATCH_DEFAULT_ONLY);

            if (isPreferred && ri != null) {
                isCallerPackagePreferred = ri.activityInfo.packageName.equals(callerPackage);
                if (!isCallerPackagePreferred) {
                    intent.setComponent(lastChosenComponent);
                    startActivity(intent);
                    finish();
                    return;
                }
            }

            lastChosen = ri;
        }
        query.close();
    }

    mPackageMonitor.register(this, getMainLooper(), false);
    mRegistered = true;

    final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
    mIconDpi = am.getLauncherLargeIconDensity();

    mAdapter = new ResolveListAdapter(this, getHistory(), intent, callerPackage, lastChosen, true);
    mAdapter.setPriorityItems(intent.getStringArrayExtra(EXTRA_PRIORITY_PACKAGES));

    mAlwaysUseOption = true;
    final int layoutId;
    final boolean useHeader;
    if (mAdapter.hasFilteredItem()) {
        layoutId = R.layout.resolver_list_with_default;
        mAlwaysUseOption = false;
        useHeader = true;
    } else {
        useHeader = false;
        layoutId = R.layout.resolver_list;
    }

    //If the caller is already the preferred, don't change it.
    if (isCallerPackagePreferred) {
        mAlwaysUseOption = false;
    }

    int count = mAdapter.mList.size();
    if (count > 1) {
        setContentView(layoutId);
        mListView = (RecyclerView) findViewById(R.id.resolver_list);
        mListView.setAdapter(mAdapter);
        mAdapter.setOnItemClickedListener(this);
        mAdapter.setOnItemLongClickedListener(this);

        if (mAlwaysUseOption) {
            mAdapter.setSelectable(true);
        }
        if (useHeader) {
            mAdapter.setHeader(new ResolveListAdapter.Header());
        }
    } else if (count == 1) {
        startActivity(mAdapter.intentForPosition(0, false));
        mPackageMonitor.unregister();
        mRegistered = false;
        finish();
        return;
    } else {
        setContentView(R.layout.resolver_list);

        final TextView empty = (TextView) findViewById(R.id.empty);
        empty.setVisibility(View.VISIBLE);

        mListView = (RecyclerView) findViewById(R.id.resolver_list);
        mListView.setVisibility(View.GONE);
    }

    mListView.setLayoutManager(new LinearLayoutManager(this));

    // Prevent the Resolver window from becoming the top fullscreen window and thus from taking
    // control of the system bars.
    getWindow().clearFlags(FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR);

    final ResolverDrawerLayout rdl = (ResolverDrawerLayout) findViewById(R.id.contentPanel);
    if (rdl != null) {
        rdl.setOnDismissedListener(new ResolverDrawerLayout.OnDismissedListener() {
            @Override
            public void onDismissed() {
                finish();
            }
        });
    }

    CharSequence title = getTitleForAction();
    if (!TextUtils.isEmpty(title)) {
        final TextView titleView = (TextView) findViewById(R.id.title);
        if (titleView != null) {
            titleView.setText(title);
        }
        setTitle(title);
    }

    final ImageView iconView = (ImageView) findViewById(R.id.icon);
    final DisplayResolveInfo iconInfo = mAdapter.getFilteredItem();
    if (iconView != null && iconInfo != null) {
        new LoadIconIntoViewTask(iconView).execute(iconInfo);
    }

    if (mAlwaysUseOption || mAdapter.hasFilteredItem()) {
        final ViewGroup buttonLayout = (ViewGroup) findViewById(R.id.button_bar);
        if (buttonLayout != null) {
            buttonLayout.setVisibility(View.VISIBLE);
            mAlwaysButton = (Button) buttonLayout.findViewById(R.id.button_always);
            mOnceButton = (Button) buttonLayout.findViewById(R.id.button_once);
        } else {
            mAlwaysUseOption = false;
        }
    }

    if (mAdapter.hasFilteredItem()) {
        mAlwaysButton.setEnabled(true);
        mOnceButton.setEnabled(true);
    }
}

From source file:com.ducnd.recordvideo_sample.CaptureDemoFragment.java

private boolean canHandleIntent(Intent intent) {
    final PackageManager mgr = getActivity().getPackageManager();
    List<ResolveInfo> list = mgr.queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

From source file:cz.maresmar.sfm.app.SfmApp.java

private void sendFeedback(Context context, String subject) {
    Timber.i("Device %s (%s) on SDK %d", Build.DEVICE, Build.MANUFACTURER, Build.VERSION.SDK_INT);

    File logFile = getLogFile();// www.j  a v  a  2s .co m
    Uri logUri = FileProvider.getUriForFile(this, "cz.maresmar.sfm.FileProvider", logFile);

    Intent emailIntent = new Intent(Intent.ACTION_SENDTO);
    emailIntent.setData(Uri.parse("mailto:"));
    emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[] { "mmrmartin+dev" + '@' + "gmail.com" });
    emailIntent.putExtra(Intent.EXTRA_SUBJECT, "[sfm] " + subject);
    emailIntent.putExtra(Intent.EXTRA_TEXT, getString(R.string.feedback_mail_text));
    emailIntent.putExtra(Intent.EXTRA_STREAM, logUri);
    emailIntent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

    List<ResolveInfo> resInfoList = getPackageManager().queryIntentActivities(emailIntent,
            PackageManager.MATCH_DEFAULT_ONLY);
    for (ResolveInfo resolveInfo : resInfoList) {
        String packageName = resolveInfo.activityInfo.packageName;
        context.grantUriPermission(packageName, logUri,
                Intent.FLAG_GRANT_WRITE_URI_PERMISSION | Intent.FLAG_GRANT_READ_URI_PERMISSION);
    }

    context.startActivity(
            Intent.createChooser(emailIntent, getString(R.string.feedback_choose_email_app_dialog)));
}