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();
}
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();
}
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);
}
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;
}
}
}
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);
}
Aggregations