Java Code Examples for android.content.Intent#getPackage()

The following examples show how to use android.content.Intent#getPackage() . You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source File: LauncherIconCreator.java    From ActivityLauncher with ISC License 6 votes vote down vote up
@TargetApi(14)
private static void doCreateShortcut(Context context, String appName, Intent intent, String iconResourceName) {
    Intent shortcutIntent = new Intent();
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, appName);
    if (iconResourceName != null) {
        Intent.ShortcutIconResource ir = new Intent.ShortcutIconResource();
        if (intent.getComponent() == null) {
            ir.packageName = intent.getPackage();
        } else {
            ir.packageName = intent.getComponent().getPackageName();
        }
        ir.resourceName = iconResourceName;
        shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, ir);
    }
    shortcutIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    context.sendBroadcast(shortcutIntent);
}
 
Example 2
Source File: LauncherModel.java    From Trebuchet with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Returns true if the shortcuts already exists on the workspace. This must be called after
 * the workspace has been loaded. We identify a shortcut by its intent.
 */
@Thunk boolean shortcutExists(Context context, Intent intent, UserHandleCompat user) {
    assertWorkspaceLoaded();
    final String intentWithPkg, intentWithoutPkg;
    if (intent.getComponent() != null) {
        // If component is not null, an intent with null package will produce
        // the same result and should also be a match.
        String packageName = intent.getComponent().getPackageName();
        if (intent.getPackage() != null) {
            intentWithPkg = intent.toUri(0);
            intentWithoutPkg = new Intent(intent).setPackage(null).toUri(0);
        } else {
            intentWithPkg = new Intent(intent).setPackage(packageName).toUri(0);
            intentWithoutPkg = intent.toUri(0);
        }
    } else {
        intentWithPkg = intent.toUri(0);
        intentWithoutPkg = intent.toUri(0);
    }

    synchronized (sBgLock) {
        for (ItemInfo item : sBgItemsIdMap) {
            if (item instanceof ShortcutInfo) {
                ShortcutInfo info = (ShortcutInfo) item;
                Intent targetIntent = info.promisedIntent == null
                        ? info.intent : info.promisedIntent;
                if (targetIntent != null && info.user.equals(user)) {
                    String s = targetIntent.toUri(0);
                    if (intentWithPkg.equals(s) || intentWithoutPkg.equals(s)) {
                        return true;
                    }
                }
            }
        }
    }
    return false;
}
 
Example 3
Source File: PluginClientManager.java    From AndroidPlugin with MIT License 5 votes vote down vote up
public ComponentName startService(Context context, Intent service) {
	String packageName = service.getPackage();
	if (TextUtils.isEmpty(packageName)) {
		throw new NullPointerException("disallow null packageName.");
	}

	if (service.getComponent() == null) {
		throw new NullPointerException("disallow null component");
	}

	String className = service.getComponent().getClassName();

	return startPluginClientService(context, service, packageName,
			className);
}
 
Example 4
Source File: ContextImpl.java    From android_9.0.0_r45 with Apache License 2.0 5 votes vote down vote up
private void validateServiceIntent(Intent service) {
    if (service.getComponent() == null && service.getPackage() == null) {
        if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
            IllegalArgumentException ex = new IllegalArgumentException(
                    "Service Intent must be explicit: " + service);
            throw ex;
        } else {
            Log.w(TAG, "Implicit intents with startService are not safe: " + service
                    + " " + Debug.getCallers(2, 3));
        }
    }
}
 
Example 5
Source File: ContextImpl.java    From AndroidComponentPlugin with Apache License 2.0 5 votes vote down vote up
private void validateServiceIntent(Intent service) {
    if (service.getComponent() == null && service.getPackage() == null) {
        if (true || getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.KITKAT) {
            Log.w(TAG, "Implicit intents with startService are not safe: " + service
                    + " " + Debug.getCallers(2, 3));
            //IllegalArgumentException ex = new IllegalArgumentException(
            //        "Service Intent must be explicit: " + service);
            //Log.e(TAG, "This will become an error", ex);
            //throw ex;
        }
    }
}
 
Example 6
Source File: VPackageManagerService.java    From container with GNU General Public License v3.0 5 votes vote down vote up
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public List<ResolveInfo> queryIntentContentProviders(Intent intent, String resolvedType, int flags, int userId) {
	checkUserId(userId);
	ComponentName comp = intent.getComponent();
	if (comp == null) {
		if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH_MR1) {
			if (intent.getSelector() != null) {
				intent = intent.getSelector();
				comp = intent.getComponent();
			}
		}
	}
	if (comp != null) {
		final List<ResolveInfo> list = new ArrayList<ResolveInfo>(1);
		final ProviderInfo pi = getProviderInfo(comp, flags, userId);
		if (pi != null) {
			final ResolveInfo ri = new ResolveInfo();
			ri.providerInfo = pi;
			list.add(ri);
		}
		return list;
	}
	// reader
	synchronized (mPackages) {
		String pkgName = intent.getPackage();
		if (pkgName == null) {
			return mProviders.queryIntent(intent, resolvedType, flags);
		}
		final PackageParser.Package pkg = mPackages.get(pkgName);
		if (pkg != null) {
			return mProviders.queryIntentForPackage(intent, resolvedType, flags, pkg.providers);
		}
		return null;
	}
}
 
Example 7
Source File: MigrateFromRestoreTask.java    From Trebuchet with GNU General Public License v3.0 5 votes vote down vote up
/**
 * Verifies if the intent should be restored.
 */
private void verifyIntent(String intentStr) throws Exception {
    Intent intent = Intent.parseUri(intentStr, 0);
    if (intent.getComponent() != null) {
        verifyPackage(intent.getComponent().getPackageName());
    } else if (intent.getPackage() != null) {
        // Only verify package if the component was null.
        verifyPackage(intent.getPackage());
    }
}
 
Example 8
Source File: ContextImpl.java    From AndroidComponentPlugin with Apache License 2.0 5 votes vote down vote up
private void validateServiceIntent(Intent service) {
    if (service.getComponent() == null && service.getPackage() == null) {
        if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
            IllegalArgumentException ex = new IllegalArgumentException(
                    "Service Intent must be explicit: " + service);
            throw ex;
        } else {
            Log.w(TAG, "Implicit intents with startService are not safe: " + service
                    + " " + Debug.getCallers(2, 3));
        }
    }
}
 
Example 9
Source File: ContextImpl.java    From AndroidComponentPlugin with Apache License 2.0 5 votes vote down vote up
private void validateServiceIntent(Intent service) {
    if (service.getComponent() == null && service.getPackage() == null) {
        if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
            IllegalArgumentException ex = new IllegalArgumentException(
                    "Service Intent must be explicit: " + service);
            throw ex;
        } else {
            Log.w(TAG, "Implicit intents with startService are not safe: " + service
                    + " " + Debug.getCallers(2, 3));
        }
    }
}
 
Example 10
Source File: ExternalNavigationHandler.java    From 365browser with Apache License 2.0 5 votes vote down vote up
/**
 * @return Whether the |url| could be handled by an external application on the system.
 */
public boolean canExternalAppHandleUrl(String url) {
    if (url.startsWith(WTAI_MC_URL_PREFIX)) return true;
    try {
        Intent intent = Intent.parseUri(url, Intent.URI_INTENT_SCHEME);
        if (intent.getPackage() != null) return true;

        List<ResolveInfo> resolvingInfos = mDelegate.queryIntentActivities(intent);
        if (resolvingInfos != null && resolvingInfos.size() > 0) return true;
    } catch (Exception ex) {
        // Ignore the error.
        Log.w(TAG, "Bad URI %s", url, ex);
    }
    return false;
}
 
Example 11
Source File: ContextImpl.java    From AndroidComponentPlugin with Apache License 2.0 5 votes vote down vote up
private void validateServiceIntent(Intent service) {
    if (service.getComponent() == null && service.getPackage() == null) {
        if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
            IllegalArgumentException ex = new IllegalArgumentException(
                    "Service Intent must be explicit: " + service);
            throw ex;
        } else {
            Log.w(TAG, "Implicit intents with startService are not safe: " + service
                    + " " + Debug.getCallers(2, 3));
        }
    }
}
 
Example 12
Source File: ContextImpl.java    From AndroidComponentPlugin with Apache License 2.0 5 votes vote down vote up
private void validateServiceIntent(Intent service) {
    if (service.getComponent() == null && service.getPackage() == null) {
        if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
            IllegalArgumentException ex = new IllegalArgumentException(
                    "Service Intent must be explicit: " + service);
            throw ex;
        } else {
            Log.w(TAG, "Implicit intents with startService are not safe: " + service
                    + " " + Debug.getCallers(2, 3));
        }
    }
}
 
Example 13
Source File: ContextImpl.java    From AndroidComponentPlugin with Apache License 2.0 5 votes vote down vote up
private void validateServiceIntent(Intent service) {
    if (service.getComponent() == null && service.getPackage() == null) {
        if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
            IllegalArgumentException ex = new IllegalArgumentException(
                    "Service Intent must be explicit: " + service);
            throw ex;
        } else {
            Log.w(TAG, "Implicit intents with startService are not safe: " + service
                    + " " + Debug.getCallers(2, 3));
        }
    }
}
 
Example 14
Source File: ContextImpl.java    From AndroidComponentPlugin with Apache License 2.0 5 votes vote down vote up
private void validateServiceIntent(Intent service) {
    if (service.getComponent() == null && service.getPackage() == null) {
        if (getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.LOLLIPOP) {
            IllegalArgumentException ex = new IllegalArgumentException(
                    "Service Intent must be explicit: " + service);
            throw ex;
        } else {
            Log.w(TAG, "Implicit intents with startService are not safe: " + service
                    + " " + Debug.getCallers(2, 3));
        }
    }
}
 
Example 15
Source File: CondomCore.java    From condom with Apache License 2.0 4 votes vote down vote up
static String getTargetPackage(final Intent intent) {
	final ComponentName component = intent.getComponent();
	return component != null ? component.getPackageName() : intent.getPackage();
}
 
Example 16
Source File: IntentResolver.java    From container with GNU General Public License v3.0 4 votes vote down vote up
private void buildResolveList(Intent intent, FastImmutableArraySet<String> categories, boolean debug,
		boolean defaultOnly, String resolvedType, String scheme, F[] src, List<R> dest) {
	final String action = intent.getAction();
	final Uri data = intent.getData();
	final String packageName = intent.getPackage();

	final int N = src != null ? src.length : 0;
	boolean hasNonDefaults = false;
	int i;
	F filter;
	for (i = 0; i < N && (filter = src[i]) != null; i++) {
		int match;

		// Is delivery being limited to filters owned by a particular
		// package?
		if (packageName != null && !isPackageForFilter(packageName, filter)) {
			continue;
		}
		// Do we already have this one?
		if (!allowFilterResult(filter, dest)) {
			continue;
		}

		match = filter.match(action, resolvedType, scheme, data, categories, TAG);
		if (match >= 0) {
			if (!defaultOnly || filter.hasCategory(Intent.CATEGORY_DEFAULT)) {
				final R oneResult = newResult(filter, match);
				if (oneResult != null) {
					dest.add(oneResult);
				}
			} else {
				hasNonDefaults = true;
			}
		}
	}

	if (hasNonDefaults) {
		if (dest.size() == 0) {
			VLog.w(TAG, "resolveIntent failed: found match, but none with CATEGORY_DEFAULT");
		} else if (dest.size() > 1) {
			VLog.w(TAG, "resolveIntent: multiple matches, only some with CATEGORY_DEFAULT");
		}
	}
}
 
Example 17
Source File: PluginManager.java    From Neptune with Apache License 2.0 4 votes vote down vote up
/**
 * 从mIntent里面解析插件包名
 * 1. 从Intent的package获取
 * 2. 从Intent的ComponentName获取
 * 3. 隐式Intent,从已安装插件列表中查找可以响应的插件
 *
 * @param mHostContext 主工程Context
 * @param mIntent      需要启动的组件
 * @return 返回需要启动插件的包名
 */
private static String tryParsePkgName(Context mHostContext, Intent mIntent) {
    if (mIntent == null || mHostContext == null) {
        return "";
    }

    String pkgName = mIntent.getPackage();
    if (!TextUtils.isEmpty(pkgName) && !TextUtils.equals(pkgName, mHostContext.getPackageName())) {
        // 与宿主pkgName不同
        return pkgName;
    }

    ComponentName cpn = mIntent.getComponent();
    if (cpn != null && !TextUtils.isEmpty(cpn.getPackageName())) {
        // 显式启动插件
        return cpn.getPackageName();
    } else {
        // 隐式启动插件
        List<PluginLiteInfo> packageList =
                PluginPackageManagerNative.getInstance(mHostContext).getInstalledApps();
        if (packageList != null) {
            // Here, loop all installed packages to get pkgName for this intent
            String packageName = "";
            ActivityInfo activityInfo = null;
            ServiceInfo serviceInfo = null;
            for (PluginLiteInfo info : packageList) {
                if (info == null) {
                    continue;
                }
                PluginPackageInfo target = PluginPackageManagerNative.getInstance(mHostContext)
                        .getPluginPackageInfo(mHostContext, info);
                if (target != null && (activityInfo = target.resolveActivity(mIntent)) != null) {
                    // 优先查找Activity, 这里转成显式Intent,后面不用二次resolve了
                    mIntent.setComponent(new ComponentName(info.packageName, activityInfo.name));
                    return info.packageName;
                }
                // resolve隐式Service
                if (!TextUtils.isEmpty(packageName) && serviceInfo != null) {
                    continue;
                }
                if (target != null && (serviceInfo = target.resolveService(mIntent)) != null) {
                    packageName = info.packageName;
                }
            }
            // Here, No Activity can handle this intent, we check service fallback
            if (!TextUtils.isEmpty(packageName)) {
                if (serviceInfo != null) {
                    // 插件框架后面的逻辑只支持显式Service处理,这里需要更新Intent的信息
                    mIntent.setComponent(new ComponentName(packageName, serviceInfo.name));
                }
                return packageName;
            }
        }
    }

    return "";
}
 
Example 18
Source File: RemapingUtil.java    From GPT with Apache License 2.0 4 votes vote down vote up
/**
 * remapReceiverIntent
 *
 * @param hostCtx      Context
 * @param originIntent Intent
 */
public static void remapReceiverIntent(Context hostCtx, Intent originIntent) {
    // 注意:pkg设置了插件包名的话,要替换成宿主包名,不然插件收不到广播
    String pkg = originIntent.getPackage();
    if (pkg != null && GPTPackageManager.getInstance(hostCtx).getPackageInfo(pkg) != null) {
        originIntent.setPackage(hostCtx.getPackageName());
    }

    if (originIntent.getComponent() == null) {
        return;
    }

    TargetMapping targetMapping = TargetManager.getInstance(hostCtx).getTargetMapping(
            originIntent.getComponent().getPackageName());
    if (targetMapping == null) {
        return;
    }

    // 获取插件信息
    GPTPackageInfo gptPkgInfo = GPTPackageManager.getInstance(hostCtx).getPackageInfo(
            targetMapping.getPackageName());
    if (gptPkgInfo == null) {
        return;
    }

    String targetReceiver = originIntent.getComponent().getClassName();
    ActivityInfo recvInfo = targetMapping.getReceiverInfo(targetReceiver);
    if (recvInfo == null) {
        return;
    }

    GPTComponentInfo info = new GPTComponentInfo();
    info.packageName = targetMapping.getPackageName();
    info.className = targetReceiver;
    originIntent.addCategory(info.toString());
    switch (gptPkgInfo.extProcess) {
        case Constants.GPT_PROCESS_DEFAULT:
        default:
            if (!gptPkgInfo.isUnionProcess) {
                originIntent.setClass(hostCtx, BroadcastReceiverProxyExt.class);
            } else {
                originIntent.setClass(hostCtx, BroadcastReceiverProxy.class);
            }
            break;
    }

    // 注意:pkg要替换成宿主,不然,插件收不到广播
    originIntent.setPackage(hostCtx.getPackageName());
}
 
Example 19
Source File: ImportDataTask.java    From LaunchEnr with GNU General Public License v3.0 4 votes vote down vote up
private static String getPackage(Intent intent) {
    return intent.getComponent() != null ? intent.getComponent().getPackageName()
            : intent.getPackage();
}
 
Example 20
Source File: Launcher.java    From LaunchEnr with GNU General Public License v3.0 4 votes vote down vote up
private void startShortcutIntentSafely(Intent intent, Bundle optsBundle, ItemInfo info) {
    try {
        StrictMode.VmPolicy oldPolicy = StrictMode.getVmPolicy();
        try {
            // Temporarily disable deathPenalty on all default checks. For eg, shortcuts
            // containing file Uri's would cause a crash as penaltyDeathOnFileUriExposure
            // is enabled by default on NYC.
            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectAll()
                    .penaltyLog().build());

            if (info.itemType == LauncherSettings.Favorites.ITEM_TYPE_DEEP_SHORTCUT) {
                String id = ((ShortcutInfo) info).getDeepShortcutId();
                String packageName = intent.getPackage();
                DeepShortcutManager.getInstance(this).startShortcut(
                        packageName, id, intent.getSourceBounds(), optsBundle, info.user);
            } else {
                // Could be launching some bookkeeping activity
                startActivity(intent, optsBundle);
            }
        } finally {
            StrictMode.setVmPolicy(oldPolicy);
        }
    } catch (SecurityException e) {
        // Due to legacy reasons, direct call shortcuts require Launchers to have the
        // corresponding permission. Show the appropriate permission prompt if that
        // is the case.

        if (AndroidVersion.isAtLeastMarshmallow) {
            if (intent.getComponent() == null
                    && Intent.ACTION_CALL.equals(intent.getAction())
                    && checkSelfPermission(Manifest.permission.CALL_PHONE) !=
                    PackageManager.PERMISSION_GRANTED) {

                setWaitingForResult(PendingRequestArgs
                        .forIntent(REQUEST_PERMISSION_CALL_PHONE, intent, info));
                requestPermissions(new String[]{Manifest.permission.CALL_PHONE},
                        REQUEST_PERMISSION_CALL_PHONE);
        }

        } else {
            // No idea why this was thrown.
            throw e;
        }
    }
}