Search in sources :

Example 61 with ProviderInfo

use of android.content.pm.ProviderInfo in project reark by reark.

the class GitHubRepositoryStoreTest method setUp.

@Before
@Override
public void setUp() throws Exception {
    setContext(InstrumentationRegistry.getTargetContext());
    final ProviderInfo providerInfo = new ProviderInfo();
    providerInfo.authority = GitHubProvider.AUTHORITY;
    contentProvider = new GitHubProvider();
    contentProvider.attachInfo(InstrumentationRegistry.getTargetContext(), providerInfo);
    contentProvider.delete(GITHUB_REPOSITORIES, null, null);
    Thread.sleep(PROVIDER_WAIT_TIME);
    final MockContentResolver contentResolver = new MockContentResolver();
    contentResolver.addProvider(GitHubProvider.AUTHORITY, contentProvider);
    gitHubRepositoryStore = new GitHubRepositoryStore(contentResolver, gson);
    testObserver = new TestObserver<>();
    super.setUp();
}
Also used : ProviderInfo(android.content.pm.ProviderInfo) GitHubProvider(io.reark.rxgithubapp.advanced.data.schematicProvider.generated.GitHubProvider) MockContentResolver(android.test.mock.MockContentResolver) Before(org.junit.Before)

Example 62 with ProviderInfo

use of android.content.pm.ProviderInfo in project reark by reark.

the class GitHubRepositoryStoreCoreTest method setUp.

@Before
@Override
public void setUp() throws Exception {
    setContext(InstrumentationRegistry.getTargetContext());
    final ProviderInfo providerInfo = new ProviderInfo();
    providerInfo.authority = GitHubProvider.AUTHORITY;
    contentProvider = new GitHubProvider();
    contentProvider.attachInfo(InstrumentationRegistry.getTargetContext(), providerInfo);
    contentProvider.delete(GITHUB_REPOSITORIES, null, null);
    Thread.sleep(PROVIDER_WAIT_TIME);
    final MockContentResolver contentResolver = new MockContentResolver();
    contentResolver.addProvider(GitHubProvider.AUTHORITY, contentProvider);
    gitHubRepositoryStoreCore = new GitHubRepositoryStoreCore(contentResolver, new Gson());
    super.setUp();
}
Also used : ProviderInfo(android.content.pm.ProviderInfo) GitHubProvider(io.reark.rxgithubapp.advanced.data.schematicProvider.generated.GitHubProvider) Gson(com.google.gson.Gson) MockContentResolver(android.test.mock.MockContentResolver) Before(org.junit.Before)

Example 63 with ProviderInfo

use of android.content.pm.ProviderInfo in project platform_packages_apps_Settings by BlissRoms.

the class AppStorageSettings method refreshGrantedUriPermissions.

private void refreshGrantedUriPermissions() {
    // Clear UI first (in case the activity has been resumed)
    removeUriPermissionsFromUi();
    // Gets all URI permissions from am.
    ActivityManager am = (ActivityManager) getActivity().getSystemService(Context.ACTIVITY_SERVICE);
    List<UriPermission> perms = am.getGrantedUriPermissions(mAppEntry.info.packageName).getList();
    if (perms.isEmpty()) {
        mClearUriButton.setVisibility(View.GONE);
        return;
    }
    PackageManager pm = getActivity().getPackageManager();
    // Group number of URIs by app.
    Map<CharSequence, MutableInt> uriCounters = new TreeMap<>();
    for (UriPermission perm : perms) {
        String authority = perm.getUri().getAuthority();
        ProviderInfo provider = pm.resolveContentProvider(authority, 0);
        CharSequence app = provider.applicationInfo.loadLabel(pm);
        MutableInt count = uriCounters.get(app);
        if (count == null) {
            uriCounters.put(app, new MutableInt(1));
        } else {
            count.value++;
        }
    }
    // Dynamically add the preferences, one per app.
    int order = 0;
    for (Map.Entry<CharSequence, MutableInt> entry : uriCounters.entrySet()) {
        int numberResources = entry.getValue().value;
        Preference pref = new Preference(getPrefContext());
        pref.setTitle(entry.getKey());
        pref.setSummary(getPrefContext().getResources().getQuantityString(R.plurals.uri_permissions_text, numberResources, numberResources));
        pref.setSelectable(false);
        pref.setLayoutResource(R.layout.horizontal_preference);
        pref.setOrder(order);
        Log.v(TAG, "Adding preference '" + pref + "' at order " + order);
        mUri.addPreference(pref);
    }
    if (mAppsControlDisallowedBySystem) {
        mClearUriButton.setEnabled(false);
    }
    mClearUri.setOrder(order);
    mClearUriButton.setVisibility(View.VISIBLE);
}
Also used : ActivityManager(android.app.ActivityManager) TreeMap(java.util.TreeMap) PackageManager(android.content.pm.PackageManager) ProviderInfo(android.content.pm.ProviderInfo) Preference(android.support.v7.preference.Preference) MutableInt(android.util.MutableInt) UriPermission(android.content.UriPermission) Map(java.util.Map) TreeMap(java.util.TreeMap)

Example 64 with ProviderInfo

use of android.content.pm.ProviderInfo in project AndroidLife by CaMnter.

the class IContentProviderProxy method wrapperUri.

/**
 * 1. 在 IContentProvider 调用任何方法的时候,都去找这个方法中的 Uri 参数
 * -  当 IContentProvider # call(...) 的时候,先抽出 Bundle,再寻找其中的 Uri
 * 2. 校验 url 是否是插件 ContentProvider
 * 3. 是的话,获取 插件 ContentProvider 对应的 ProviderInfo 和 LoadedPlugin
 * -  构造 插桩 ContentProvider 的 Uri
 * -  该协议是复合 Uri 协议,包含了最初的 插件 ContentProvider Uri 信息
 * 4. 根据 复合 Uri 协议,会 call 向 插桩 ContentProvider,在 插桩 ContentProvider
 * -  内,再次分发 插件 ContentProvider Uri
 *
 * 5. 将复合 Uri 协议,替换 1. 中找到的 Uri 参数,IContentProvider # call(...) 的时
 * -  候,先抽出 Bundle,替换其中的 Uri
 */
private void wrapperUri(Method method, Object[] args) {
    Uri uri = null;
    int index = 0;
    if (args != null) {
        for (int i = 0; i < args.length; i++) {
            if (args[i] instanceof Uri) {
                uri = (Uri) args[i];
                index = i;
                break;
            }
        }
    }
    Bundle bundleInCallMethod = null;
    if (method.getName().equals("call")) {
        bundleInCallMethod = getBundleParameter(args);
        if (bundleInCallMethod != null) {
            String uriString = bundleInCallMethod.getString(KEY_WRAPPER_URI);
            if (uriString != null) {
                uri = Uri.parse(uriString);
            }
        }
    }
    if (uri == null) {
        return;
    }
    PluginManager pluginManager = PluginManager.getInstance(mContext);
    ProviderInfo info = pluginManager.resolveContentProvider(uri.getAuthority(), 0);
    if (info != null) {
        String pkg = info.packageName;
        LoadedPlugin plugin = pluginManager.getLoadedPlugin(pkg);
        String pluginUri = Uri.encode(uri.toString());
        StringBuilder builder = new StringBuilder(PluginContentResolver.getUri(mContext));
        builder.append("/?plugin=" + plugin.getLocation());
        builder.append("&pkg=" + pkg);
        builder.append("&uri=" + pluginUri);
        Uri wrapperUri = Uri.parse(builder.toString());
        if (method.getName().equals("call")) {
            bundleInCallMethod.putString(KEY_WRAPPER_URI, wrapperUri.toString());
        } else {
            args[index] = wrapperUri;
        }
    }
}
Also used : PluginManager(com.didi.virtualapk.PluginManager) LoadedPlugin(com.didi.virtualapk.internal.LoadedPlugin) ProviderInfo(android.content.pm.ProviderInfo) Bundle(android.os.Bundle) Uri(android.net.Uri)

Example 65 with ProviderInfo

use of android.content.pm.ProviderInfo in project kripton by xcesco.

the class TestContentProviderRuntime method setupContentProvider.

@Before
public void setupContentProvider() {
    ProviderInfo info = new ProviderInfo();
    info.authority = BindPersonContentProvider.AUTHORITY;
    ContentProviderController<BindPersonContentProvider> controller = Robolectric.buildContentProvider(BindPersonContentProvider.class);
    controller.create(info);
}
Also used : ProviderInfo(android.content.pm.ProviderInfo) BindPersonContentProvider(sqlite.feature.contentprovider.kripton35.persistence.BindPersonContentProvider) Before(org.junit.Before)

Aggregations

ProviderInfo (android.content.pm.ProviderInfo)200 ComponentName (android.content.ComponentName)43 RemoteException (android.os.RemoteException)36 ArrayList (java.util.ArrayList)33 PackageManager (android.content.pm.PackageManager)27 ResolveInfo (android.content.pm.ResolveInfo)23 ApplicationInfo (android.content.pm.ApplicationInfo)22 ServiceInfo (android.content.pm.ServiceInfo)16 Point (android.graphics.Point)16 VPackage (com.lody.virtual.server.pm.parser.VPackage)15 PackageInfo (android.content.pm.PackageInfo)14 Map (java.util.Map)14 Test (org.junit.Test)14 NameNotFoundException (android.content.pm.PackageManager.NameNotFoundException)13 Uri (android.net.Uri)13 File (java.io.File)13 IPackageManager (android.content.pm.IPackageManager)12 ActivityInfo (android.content.pm.ActivityInfo)10 Before (org.junit.Before)10 Intent (android.content.Intent)8