android.content.pm.PackageParser#ProviderIntentInfo()源码实例Demo

下面列出了android.content.pm.PackageParser#ProviderIntentInfo() 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。

void removeProvider(PackageParser.Provider p) {
    mProviders.remove(p.getComponentName());
    if (DEBUG_SHOW_INFO) {
        Log.v(TAG, "  " + (p.info.nonLocalizedLabel != null
                ? p.info.nonLocalizedLabel
                : p.info.name) + ":");
        Log.v(TAG, "    Class=" + p.info.name);
    }
    final int intentsSize = p.intents.size();
    int j;
    for (j = 0; j < intentsSize; j++) {
        PackageParser.ProviderIntentInfo intent = p.intents.get(j);
        if (DEBUG_SHOW_INFO) {
            Log.v(TAG, "    IntentFilter:");
            intent.dump(new LogPrinter(Log.VERBOSE, TAG), "      ");
        }
        removeFilter(intent);
    }
}
 
@Override
protected boolean isFilterStopped(PackageParser.ProviderIntentInfo filter, int userId) {
    if (!sUserManager.exists(userId)) {
        return true;
    }
    PackageParser.Package p = filter.provider.owner;
    if (p != null) {
        PackageSetting ps = (PackageSetting) p.mExtras;
        if (ps != null) {
            // System apps are never considered stopped for purposes of
            // filtering, because there may be no way for the user to
            // actually re-launch them.
            return (ps.pkgFlags & ApplicationInfo.FLAG_SYSTEM) == 0
                    && ps.getStopped(userId);
        }
    }
    return false;
}
 
源代码3 项目: container   文件: ProviderIntentResolver.java
public List<ResolveInfo> queryIntentForPackage(Intent intent, String resolvedType, int flags,
		ArrayList<PackageParser.Provider> packageProviders) {
	if (packageProviders == null) {
		return null;
	}
	mFlags = flags;
	final boolean defaultOnly = (flags & PackageManager.MATCH_DEFAULT_ONLY) != 0;
	final int N = packageProviders.size();
	ArrayList<PackageParser.ProviderIntentInfo[]> listCut = new ArrayList<>(N);

	ArrayList<PackageParser.ProviderIntentInfo> intentFilters;
	for (int i = 0; i < N; ++i) {
		intentFilters = packageProviders.get(i).intents;
		if (intentFilters != null && intentFilters.size() > 0) {
			PackageParser.ProviderIntentInfo[] array = new PackageParser.ProviderIntentInfo[intentFilters
					.size()];
			intentFilters.toArray(array);
			listCut.add(array);
		}
	}
	return super.queryIntentFromList(intent, resolvedType, defaultOnly, listCut);
}
 
源代码4 项目: container   文件: ProviderIntentResolver.java
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
protected ResolveInfo newResult(PackageParser.ProviderIntentInfo filter, int match) {
	final PackageParser.Provider provider = filter.provider;
	ProviderInfo pi = PackageParserCompat.generateProviderInfo(provider, mFlags);
	if (pi == null) {
		return null;
	}
	final ResolveInfo res = new ResolveInfo();
	res.providerInfo = pi;
	if ((mFlags & PackageManager.GET_RESOLVED_FILTER) != 0) {
		res.filter = filter;
	}
	res.priority = filter.getPriority();
	res.preferredOrder = provider.owner.mPreferredOrder;
	res.match = match;
	res.isDefault = filter.hasDefault;
	res.labelRes = filter.labelRes;
	res.nonLocalizedLabel = filter.nonLocalizedLabel;
	res.icon = filter.icon;
	return res;
}
 
public List queryIntentForPackage(Intent intent, String resolvedType,
		int flags, ArrayList<PackageParser.Provider> packageProviders) {
	if (packageProviders == null) {
		return null;
	}
	mFlags = flags;
	final boolean defaultOnly = (flags & PackageManager.MATCH_DEFAULT_ONLY) != 0;
	int N = packageProviders.size();
	ArrayList<ArrayList<PackageParser.ProviderIntentInfo>> listCut = new ArrayList<ArrayList<PackageParser.ProviderIntentInfo>>(
			N);

	ArrayList<PackageParser.ProviderIntentInfo> intentFilters;
	for (int i = 0; i < N; ++i) {
		intentFilters = packageProviders.get(i).intents;
		if (intentFilters != null && intentFilters.size() > 0) {
			listCut.add(intentFilters);
		}
	}
	return super.queryIntentFromList(intent, resolvedType, defaultOnly,
			listCut);
}
 
public final void addProvider(PackageParser.Provider p) {
    mProviders.put(p.getComponentName(), p);
	int NI = p.intents.size();
	for (int j = 0; j < NI; j++) {
		PackageParser.ProviderIntentInfo intent = p.intents.get(j);
		addFilter(intent);
	}
}
 
void addProvider(PackageParser.Provider p) {
    if (mProviders.containsKey(p.getComponentName())) {
        Slog.w(TAG, "Provider " + p.getComponentName() + " already defined; ignoring");
        return;
    }

    mProviders.put(p.getComponentName(), p);
    if (DEBUG_SHOW_INFO) {
        Log.v(TAG, "  "
                + (p.info.nonLocalizedLabel != null
                        ? p.info.nonLocalizedLabel
                        : p.info.name)
                + ":");
        Log.v(TAG, "    Class=" + p.info.name);
    }
    final int intentsSize = p.intents.size();
    int j;
    for (j = 0; j < intentsSize; j++) {
        PackageParser.ProviderIntentInfo intent = p.intents.get(j);
        if (DEBUG_SHOW_INFO) {
            Log.v(TAG, "    IntentFilter:");
            intent.dump(new LogPrinter(Log.VERBOSE, TAG), "      ");
        }
        if (!intent.debugCheck()) {
            Log.w(TAG, "==> For Provider " + p.info.name);
        }
        addFilter(intent);
    }
}
 
@Override
protected boolean allowFilterResult(
		PackageParser.ProviderIntentInfo filter, List<PackageParser.Provider> dest) {
	for (int i = dest.size() - 1; i >= 0; i--) {
		PackageParser.Provider destAi = dest.get(i);
		if (destAi == filter.provider) {
			return false;
		}
	}
	return true;
}
 
源代码9 项目: container   文件: ProviderIntentResolver.java
public final void addProvider(PackageParser.Provider p) {
	if (mProviders.containsKey(p.getComponentName())) {
		VLog.w(TAG, "Provider " + p.getComponentName() + " already defined; ignoring");
		return;
	}

	mProviders.put(p.getComponentName(), p);
	final int NI = p.intents.size();
	int j;
	for (j = 0; j < NI; j++) {
		PackageParser.ProviderIntentInfo intent = p.intents.get(j);
		addFilter(intent);
	}
}
 
源代码10 项目: container   文件: ProviderIntentResolver.java
public final void removeProvider(PackageParser.Provider p) {
	mProviders.remove(p.getComponentName());
	final int NI = p.intents.size();
	int j;
	for (j = 0; j < NI; j++) {
		PackageParser.ProviderIntentInfo intent = p.intents.get(j);
		removeFilter(intent);
	}
}
 
源代码11 项目: container   文件: ProviderIntentResolver.java
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
protected boolean allowFilterResult(PackageParser.ProviderIntentInfo filter, List<ResolveInfo> dest) {
	ProviderInfo filterPi = filter.provider.info;
	for (int i = dest.size() - 1; i >= 0; i--) {
		ProviderInfo destPi = dest.get(i).providerInfo;
		if (ObjectsCompat.equals(destPi.name, filterPi.name)
				&& ObjectsCompat.equals(destPi.packageName, filterPi.packageName)) {
			return false;
		}
	}
	return true;
}
 
@Override
protected void dumpFilter(PrintWriter out, String prefix,
		PackageParser.ProviderIntentInfo filter) {
	out.print(prefix);
	out.print(Integer.toHexString(System.identityHashCode(filter.provider)));
	out.print(' ');
	out.print(filter.provider.getComponentName());
	out.print(" filter ");
	out.println(Integer.toHexString(System.identityHashCode(filter)));
}
 
源代码13 项目: AndroidComponentPlugin   文件: ComponentResolver.java
@Override
protected PackageParser.ProviderIntentInfo[] newArray(int size) {
    return new PackageParser.ProviderIntentInfo[size];
}
 
@Override
protected String packageForFilter(PackageParser.ProviderIntentInfo info) {
	return info.provider.owner.packageName;
}
 
@Override
protected PackageParser.Provider newResult(PackageParser.ProviderIntentInfo info,
		int match) {
	return info.provider;
}
 
源代码16 项目: AndroidComponentPlugin   文件: ComponentResolver.java
@Override
protected Object filterToLabel(PackageParser.ProviderIntentInfo filter) {
    return filter.provider;
}
 
源代码17 项目: container   文件: ProviderIntentResolver.java
@Override
protected PackageParser.ProviderIntentInfo[] newArray(int size) {
	return new PackageParser.ProviderIntentInfo[size];
}
 
源代码18 项目: container   文件: ProviderIntentResolver.java
@Override
protected boolean isFilterStopped(PackageParser.ProviderIntentInfo filter) {
	return false;
}
 
源代码19 项目: container   文件: ProviderIntentResolver.java
@Override
protected boolean isPackageForFilter(String packageName, PackageParser.ProviderIntentInfo info) {
	return packageName.equals(info.provider.owner.packageName);
}
 
源代码20 项目: container   文件: ProviderIntentResolver.java
@Override
protected void dumpFilter(PrintWriter out, String prefix, PackageParser.ProviderIntentInfo filter) {

}