Search in sources :

Example 11 with ContentProviderClient

use of android.content.ContentProviderClient in project android_frameworks_base by AOSPA.

the class DocumentsApplication method acquireUnstableProviderOrThrow.

public static ContentProviderClient acquireUnstableProviderOrThrow(ContentResolver resolver, String authority) throws RemoteException {
    final ContentProviderClient client = resolver.acquireUnstableContentProviderClient(authority);
    if (client == null) {
        throw new RemoteException("Failed to acquire provider for " + authority);
    }
    client.setDetectNotResponding(PROVIDER_ANR_TIMEOUT);
    return client;
}
Also used : RemoteException(android.os.RemoteException) ContentProviderClient(android.content.ContentProviderClient)

Example 12 with ContentProviderClient

use of android.content.ContentProviderClient in project android_frameworks_base by AOSPA.

the class OpenExternalDirectoryActivity method getIntentForExistingPermission.

private static Intent getIntentForExistingPermission(OpenExternalDirectoryActivity activity, boolean isRoot, File root, File file) {
    final String packageName = activity.getCallingPackage();
    final ContentProviderClient storageClient = activity.getExternalStorageClient();
    final Uri grantedUri = getGrantedUriPermission(activity, storageClient, file);
    final Uri rootUri = root.equals(file) ? grantedUri : getGrantedUriPermission(activity, storageClient, root);
    if (DEBUG)
        Log.d(TAG, "checking if " + packageName + " already has permission for " + grantedUri + " or its root (" + rootUri + ")");
    final ActivityManager am = (ActivityManager) activity.getSystemService(Context.ACTIVITY_SERVICE);
    for (UriPermission uriPermission : am.getGrantedUriPermissions(packageName).getList()) {
        final Uri uri = uriPermission.getUri();
        if (uri == null) {
            Log.w(TAG, "null URI for " + uriPermission);
            continue;
        }
        if (uri.equals(grantedUri) || uri.equals(rootUri)) {
            if (DEBUG)
                Log.d(TAG, packageName + " already has permission: " + uriPermission);
            return createGrantedUriPermissionsIntent(grantedUri);
        }
    }
    if (DEBUG)
        Log.d(TAG, packageName + " does not have permission for " + grantedUri);
    return null;
}
Also used : UriPermission(android.content.UriPermission) ActivityManager(android.app.ActivityManager) Uri(android.net.Uri) ContentProviderClient(android.content.ContentProviderClient)

Example 13 with ContentProviderClient

use of android.content.ContentProviderClient in project platform_frameworks_base by android.

the class MediaInserterTest method setUp.

@Override
protected void setUp() throws Exception {
    super.setUp();
    mMockProvider = EasyMock.createMock(IContentProvider.class);
    final ContentProviderClient client = new ContentProviderClient(getInstrumentation().getContext().getContentResolver(), mMockProvider, true);
    mMediaInserter = new MediaInserter(client, TEST_BUFFER_SIZE);
    mPackageName = getInstrumentation().getContext().getPackageName();
    mFilesCounter = 0;
    mAudioCounter = 0;
    mVideoCounter = 0;
    mImagesCounter = 0;
}
Also used : IContentProvider(android.content.IContentProvider) MediaInserter(android.media.MediaInserter) ContentProviderClient(android.content.ContentProviderClient)

Example 14 with ContentProviderClient

use of android.content.ContentProviderClient in project platform_frameworks_base by android.

the class Job method getClient.

ContentProviderClient getClient(DocumentInfo doc) throws RemoteException {
    ContentProviderClient client = mClients.get(doc.authority);
    if (client == null) {
        // Acquire content providers.
        client = acquireUnstableProviderOrThrow(getContentResolver(), doc.authority);
        mClients.put(doc.authority, client);
    }
    assert (client != null);
    return client;
}
Also used : ContentProviderClient(android.content.ContentProviderClient)

Example 15 with ContentProviderClient

use of android.content.ContentProviderClient in project platform_frameworks_base by android.

the class RootsCache method loadRootsForAuthority.

/**
     * Bring up requested provider and query for all active roots.
     */
private Collection<RootInfo> loadRootsForAuthority(ContentResolver resolver, String authority, boolean forceRefresh) {
    if (DEBUG)
        Log.d(TAG, "Loading roots for " + authority);
    synchronized (mObservedAuthorities) {
        if (mObservedAuthorities.add(authority)) {
            // Watch for any future updates
            final Uri rootsUri = DocumentsContract.buildRootsUri(authority);
            mContext.getContentResolver().registerContentObserver(rootsUri, true, mObserver);
        }
    }
    final Uri rootsUri = DocumentsContract.buildRootsUri(authority);
    if (!forceRefresh) {
        // Look for roots data that we might have cached for ourselves in the
        // long-lived system process.
        final Bundle systemCache = resolver.getCache(rootsUri);
        if (systemCache != null) {
            if (DEBUG)
                Log.d(TAG, "System cache hit for " + authority);
            return systemCache.getParcelableArrayList(TAG);
        }
    }
    final ArrayList<RootInfo> roots = new ArrayList<>();
    ContentProviderClient client = null;
    Cursor cursor = null;
    try {
        client = DocumentsApplication.acquireUnstableProviderOrThrow(resolver, authority);
        cursor = client.query(rootsUri, null, null, null, null);
        while (cursor.moveToNext()) {
            final RootInfo root = RootInfo.fromRootsCursor(authority, cursor);
            roots.add(root);
        }
    } catch (Exception e) {
        Log.w(TAG, "Failed to load some roots from " + authority + ": " + e);
    } finally {
        IoUtils.closeQuietly(cursor);
        ContentProviderClient.releaseQuietly(client);
    }
    // Cache these freshly parsed roots over in the long-lived system
    // process, in case our process goes away. The system takes care of
    // invalidating the cache if the package or Uri changes.
    final Bundle systemCache = new Bundle();
    systemCache.putParcelableArrayList(TAG, roots);
    resolver.putCache(rootsUri, systemCache);
    return roots;
}
Also used : RootInfo(com.android.documentsui.model.RootInfo) Bundle(android.os.Bundle) ArrayList(java.util.ArrayList) Cursor(android.database.Cursor) Uri(android.net.Uri) ContentProviderClient(android.content.ContentProviderClient)

Aggregations

ContentProviderClient (android.content.ContentProviderClient)93 RemoteException (android.os.RemoteException)30 Cursor (android.database.Cursor)28 Uri (android.net.Uri)24 ContentResolver (android.content.ContentResolver)18 Bundle (android.os.Bundle)18 FileNotFoundException (java.io.FileNotFoundException)15 ArrayList (java.util.ArrayList)13 IOException (java.io.IOException)9 Test (org.junit.Test)9 OperationCanceledException (android.os.OperationCanceledException)8 CancellationSignal (android.os.CancellationSignal)7 IContentProvider (android.content.IContentProvider)6 ActivityManager (android.app.ActivityManager)5 AlertDialog (android.app.AlertDialog)5 ClipData (android.content.ClipData)5 ComponentName (android.content.ComponentName)5 Intent (android.content.Intent)5 ServiceConnection (android.content.ServiceConnection)5 UriPermission (android.content.UriPermission)5