當前位置: 首頁>>代碼示例>>Java>>正文


Java ProviderInfo類代碼示例

本文整理匯總了Java中android.content.pm.ProviderInfo的典型用法代碼示例。如果您正苦於以下問題:Java ProviderInfo類的具體用法?Java ProviderInfo怎麽用?Java ProviderInfo使用的例子?那麽, 這裏精選的類代碼示例或許可以為您提供幫助。


ProviderInfo類屬於android.content.pm包,在下文中一共展示了ProviderInfo類的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Java代碼示例。

示例1: getProviders

import android.content.pm.ProviderInfo; //導入依賴的package包/類
private Observable<List<ProviderInfo>> getProviders(){
    return Observable.fromCallable(new Callable<List<ProviderInfo>>() {
        @Override public List<ProviderInfo> call() throws Exception {
            List<ProviderInfo> info = new ArrayList<>();
            for (PackageInfo providerInfo :getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS)){
                if (providerInfo.providers != null){
                    for (ProviderInfo provider : providerInfo.providers) {
                        if (provider.authority != null) {
                            if (sp.getBoolean("need_filter",false)){
                                info.add(provider);
                            }else if(provider.readPermission!=null){
                                info.add(provider);
                            }
                        }
                    }
                }
            }
            return info;
        }
    });
}
 
開發者ID:AlexeyZatsepin,項目名稱:CP-Tester,代碼行數:22,代碼來源:MainActivity.java

示例2: testProviderRegistry

import android.content.pm.ProviderInfo; //導入依賴的package包/類
@Test
public void testProviderRegistry() {
    Context appContext = InstrumentationRegistry.getTargetContext();
    PackageManager pm = appContext.getPackageManager();

    // We define the component name based on the package name from the context and the
    // Provider class.
    ComponentName componentName = new ComponentName(appContext.getPackageName(),
            FavoritesProvider.class.getName());
    try {
        // Fetch the provider info using the component name from the PackageManager
        // This throws an exception if the provider isn't registered.
        ProviderInfo providerInfo = pm.getProviderInfo(componentName, 0);

        // Make sure that the registered authority matches the authority from the Contract.
        assertEquals("Error: FavoritesProvider registered with authority: " + providerInfo.authority
                + " instead of authority: " + FavoritesContract.AUTHORITY,
                providerInfo.authority, FavoritesContract.AUTHORITY);
    } catch (PackageManager.NameNotFoundException e) {
        // I guess the provider isn't registered correctly.
        assertTrue("Error: FavoritesProvider not registered at " + appContext.getPackageName(),
                false);
    }
}
 
開發者ID:an-garcia,項目名稱:MovieGuide,代碼行數:25,代碼來源:TestProvider.java

示例3: addProviderInfo

import android.content.pm.ProviderInfo; //導入依賴的package包/類
private void addProviderInfo(String stubAuthority, ProviderInfo info) {
    if (!targetProviderInfos.containsKey(info.authority)) {
        targetProviderInfos.put(info.authority, info);

        if (!pkgs.contains(info.packageName)) {
            pkgs.add(info.packageName);
        }

        //stub map to activity info
        Set<ProviderInfo> list = providerInfosMap.get(stubAuthority);
        if (list == null) {
            list = new TreeSet<ProviderInfo>(sProviderInfoComparator);
            list.add(info);
            providerInfosMap.put(stubAuthority, list);
        } else {
            list.add(info);
        }
    }
}
 
開發者ID:amikey,項目名稱:DroidPlugin,代碼行數:20,代碼來源:RunningProcesList.java

示例4: testProviderRegistry

import android.content.pm.ProviderInfo; //導入依賴的package包/類
public void testProviderRegistry() {
    PackageManager pm = mContext.getPackageManager();

    ComponentName componentName = new ComponentName(mContext.getPackageName(),
            LeaderProvider.class.getName());
    try {
        // Fetch the provider info using the component name from the PackageManager
        // This throws an exception if the provider isn't registered.
        ProviderInfo providerInfo = pm.getProviderInfo(componentName, 0);

        // Make sure that the registered authority matches the authority from the Contract.
        assertEquals("Error: LeaderProvider registered with authority: " + providerInfo.authority +
                " instead of authority: " + LeaderContract.CONTENT_AUTHORITY,
                providerInfo.authority, LeaderContract.CONTENT_AUTHORITY);
    } catch (PackageManager.NameNotFoundException e) {
        assertTrue("Error: LeaderProvider not registered at " + mContext.getPackageName(),
                false);
    }
}
 
開發者ID:Protino,項目名稱:CodeWatch,代碼行數:20,代碼來源:TestProvider.java

示例5: acquireProviderClient

import android.content.pm.ProviderInfo; //導入依賴的package包/類
@Override
public IBinder acquireProviderClient(int userId, ProviderInfo info) {
    ProcessRecord callerApp;
    synchronized (mPidsSelfLocked) {
        callerApp = findProcessLocked(VBinder.getCallingPid());
    }
    if (callerApp == null) {
        throw new SecurityException("Who are you?");
    }
    String processName = info.processName;
    ProcessRecord r;
    synchronized (this) {
        r = startProcessIfNeedLocked(processName, userId, info.packageName);
    }
    if (r != null && r.client.asBinder().isBinderAlive()) {
        try {
            return r.client.acquireProviderClient(info);
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }
    return null;
}
 
開發者ID:coding-dream,項目名稱:TPlayer,代碼行數:24,代碼來源:VActivityManagerService.java

示例6: handleDocumentsProvider

import android.content.pm.ProviderInfo; //導入依賴的package包/類
private void handleDocumentsProvider(ProviderInfo info) {
    // Ignore stopped packages for now; we might query them
    // later during UI interaction.
    if ((info.applicationInfo.flags & ApplicationInfo.FLAG_STOPPED) != 0) {
        if (LOGD) Log.d(TAG, "Ignoring stopped authority " + info.authority);
        mTaskStoppedAuthorities.add(info.authority);
        return;
    }

    // Try using cached roots if filtering
    boolean cacheHit = false;
    if (mAuthority != null && !mAuthority.equals(info.authority)) {
        synchronized (mLock) {
            if (mTaskRoots.putAll(info.authority, mRoots.get(info.authority))) {
                if (LOGD) Log.d(TAG, "Used cached roots for " + info.authority);
                cacheHit = true;
            }
        }
    }

    // Cache miss, or loading everything
    if (!cacheHit) {
        mTaskRoots.putAll(info.authority,
                loadRootsForAuthority(mContext.getContentResolver(), info.authority));
    }
}
 
開發者ID:kranthi0987,項目名稱:easyfilemanager,代碼行數:27,代碼來源:RootsCache.java

示例7: queryContentProviders

import android.content.pm.ProviderInfo; //導入依賴的package包/類
@Override
public VParceledListSlice<ProviderInfo> queryContentProviders(String processName, int vuid, int flags) {
    int userId = VUserHandle.getUserId(vuid);
    checkUserId(userId);
    flags = updateFlagsNought(flags);
    ArrayList<ProviderInfo> finalList = new ArrayList<>(3);
    // reader
    synchronized (mPackages) {
        for (VPackage.ProviderComponent p : mProvidersByComponent.values()) {
            PackageSetting ps = (PackageSetting) p.owner.mExtras;
            if (processName == null || ps.appId == VUserHandle.getAppId(vuid) && p.info.processName.equals(processName)) {
                ProviderInfo providerInfo = PackageParserEx.generateProviderInfo(p, flags, ps.readUserState(userId), userId);
                finalList.add(providerInfo);
            }
        }
    }
    if (!finalList.isEmpty()) {
        Collections.sort(finalList, sProviderInitOrderSorter);
    }
    return new VParceledListSlice<>(finalList);
}
 
開發者ID:7763sea,項目名稱:VirtualHook,代碼行數:22,代碼來源:VPackageManagerService.java

示例8: queryIntentContentProviders

import android.content.pm.ProviderInfo; //導入依賴的package包/類
@TargetApi(Build.VERSION_CODES.KITKAT)
@Override
public List<ResolveInfo> queryIntentContentProviders(Intent intent, String resolvedType, int flags, int userId) {
    checkUserId(userId);
    flags = updateFlagsNought(flags);
    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, userId);
        }
        final VPackage pkg = mPackages.get(pkgName);
        if (pkg != null) {
            return mProviders.queryIntentForPackage(intent, resolvedType, flags, pkg.providers, userId);
        }
        return Collections.emptyList();
    }
}
 
開發者ID:7763sea,項目名稱:VirtualHook,代碼行數:38,代碼來源:VPackageManagerService.java

示例9: generateProviderInfo

import android.content.pm.ProviderInfo; //導入依賴的package包/類
public static ProviderInfo generateProviderInfo(VPackage.ProviderComponent p, int flags,
                                                PackageUserState state, int userId) {
    if (p == null) return null;
    if (!checkUseInstalledOrHidden(state, flags)) {
        return null;
    }
    // Make shallow copies so we can store the metadata safely
    ProviderInfo pi = new ProviderInfo(p.info);
    if ((flags & PackageManager.GET_META_DATA) != 0
            && (p.metaData != null)) {
        pi.metaData = p.metaData;
    }

    if ((flags & PackageManager.GET_URI_PERMISSION_PATTERNS) == 0) {
        pi.uriPermissionPatterns = null;
    }
    pi.applicationInfo = generateApplicationInfo(p.owner, flags, state, userId);
    return pi;
}
 
開發者ID:coding-dream,項目名稱:TPlayer,代碼行數:20,代碼來源:PackageParserEx.java

示例10: getMyAuthority

import android.content.pm.ProviderInfo; //導入依賴的package包/類
private String getMyAuthority() throws PackageManager.NameNotFoundException, IllegalAccessException {
    if (VERSION.SDK_INT >= VERSION_CODES.LOLLIPOP) {
        return (String) FieldUtils.readField(this, "mAuthority");
    } else {
        Context context = getContext();
        PackageInfo pkgInfo = context.getPackageManager().getPackageInfo(context.getPackageName(), PackageManager.GET_PROVIDERS);
        if (pkgInfo != null && pkgInfo.providers != null && pkgInfo.providers.length > 0) {
            for (ProviderInfo info : pkgInfo.providers) {
                if (TextUtils.equals(info.name, getClass().getName())) {
                    return info.authority;
                }
            }
        }
    }
    return null;
}
 
開發者ID:amikey,項目名稱:DroidPlugin,代碼行數:17,代碼來源:AbstractContentProviderStub.java

示例11: resolveContentProvider

import android.content.pm.ProviderInfo; //導入依賴的package包/類
public ProviderInfo resolveContentProvider(String name, int flags) throws RemoteException {
    waitForReadyInner();
    try {
        enforcePluginFileExists();
        if (shouldNotBlockOtherInfo()) {
            for (PluginPackageParser pluginPackageParser : this.mPluginCache.values()) {
                for (ProviderInfo providerInfo : pluginPackageParser.getProviders()) {
                    if (TextUtils.equals(providerInfo.authority, name)) {
                        return providerInfo;
                    }
                }
            }
        }
        List<String> pkgs = this.mActivityManagerService.getPackageNamesByPid(Binder.getCallingPid());
        for (PluginPackageParser pluginPackageParser2 : this.mPluginCache.values()) {
            for (ProviderInfo providerInfo2 : pluginPackageParser2.getProviders()) {
                if (TextUtils.equals(providerInfo2.authority, name) && pkgs.contains(providerInfo2.packageName)) {
                    return providerInfo2;
                }
            }
        }
    } catch (Exception e) {
        handleException(e);
    }
    return null;
}
 
開發者ID:JackChan1999,項目名稱:letv,代碼行數:27,代碼來源:IApkManagerImpl.java

示例12: getProviderInfo

import android.content.pm.ProviderInfo; //導入依賴的package包/類
public ProviderInfo getProviderInfo(ComponentName className, int flags) throws NameNotFoundException, RemoteException {
    ProviderInfo providerInfo = null;
    if (className != null) {
        try {
            if (!(this.mApkManager == null || className == null)) {
                providerInfo = this.mApkManager.getProviderInfo(className, flags);
            }
        } catch (RemoteException e) {
            JLog.log("wuxinrong", "獲取Provider信息 失敗 e=" + e.getMessage());
            throw e;
        } catch (Exception e2) {
            JLog.log("wuxinrong", "獲取Provider信息 失敗 e=" + e2.getMessage());
        }
    }
    return providerInfo;
}
 
開發者ID:JackChan1999,項目名稱:letv,代碼行數:17,代碼來源:ApkManager.java

示例13: getAuthorityFromPermission

import android.content.pm.ProviderInfo; //導入依賴的package包/類
private static String getAuthorityFromPermission(String permission) {
    List<PackageInfo> packs = BaseApplication.getInstance().getPackageManager().getInstalledPackages(8);
    if (packs != null) {
        for (PackageInfo pack : packs) {
            ProviderInfo[] providers = pack.providers;
            if (!BaseTypeUtils.isArrayEmpty(providers)) {
                for (ProviderInfo provider : providers) {
                    String readPermission = provider.readPermission;
                    if (readPermission != null && permission.equals(readPermission)) {
                        return provider.authority;
                    }
                }
                continue;
            }
        }
    }
    return null;
}
 
開發者ID:JackChan1999,項目名稱:letv,代碼行數:19,代碼來源:UIs.java

示例14: afterInvoke

import android.content.pm.ProviderInfo; //導入依賴的package包/類
@Override
protected void afterInvoke(Object receiver, Method method, Object[] args, Object invokeResult) throws Throwable {
    if (args != null) {
        if (invokeResult == null) {
            final int index0 = 0, index1 = 1;
            if (args.length >= 2 && args[index0] instanceof String && args[index1] instanceof Integer) {
                String name = (String) args[index0];
                Integer flags = (Integer) args[index1];
                ProviderInfo info = PluginManager.getInstance().resolveContentProvider(name, flags);
                if (info != null) {
                    setFakedResult(info);
                }
            }
        }
    }
    super.afterInvoke(receiver, method, args, invokeResult);
}
 
開發者ID:amikey,項目名稱:DroidPlugin,代碼行數:18,代碼來源:IPackageManagerHookHandle.java

示例15: newResult

import android.content.pm.ProviderInfo; //導入依賴的package包/類
@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;
}
 
開發者ID:codehz,項目名稱:container,代碼行數:23,代碼來源:ProviderIntentResolver.java


注:本文中的android.content.pm.ProviderInfo類示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。