public final class

DropDataContentProvider

extends ContentProvider

 java.lang.Object

↳ContentProvider

↳androidx.webkit.DropDataContentProvider

Gradle dependencies

compile group: 'androidx.webkit', name: 'webkit', version: '1.12.0-rc01'

  • groupId: androidx.webkit
  • artifactId: webkit
  • version: 1.12.0-rc01

Artifact androidx.webkit:webkit:1.12.0-rc01 it located at Google repository (https://maven.google.com/)

Androidx artifact mapping:

androidx.webkit:webkit com.android.support:webkit

Overview

WebView provides partial support for Android Drag and Drop allowing images, text and links to be dragged out of a WebView. The content provider is required to make the images drag work, to enable, you should add this class to your manifest, for example:

  <provider
             android:authorities="<your-package>.DropDataProvider"
             android:name="androidx.webkit.DropDataContentProvider"
             android:exported="false"
             android:grantUriPermissions="true"/>
 

Summary

Constructors
publicDropDataContentProvider()

Methods
public Bundlecall(java.lang.String method, java.lang.String arg, Bundle extras)

public intdelete(Uri uri, java.lang.String selection, java.lang.String selectionArgs[])

public java.lang.StringgetType(Uri uri)

public Uriinsert(Uri uri, ContentValues contentValues)

public booleanonCreate()

public ParcelFileDescriptoropenFile(Uri uri, java.lang.String mode)

public Cursorquery(Uri uri, java.lang.String projection[], java.lang.String selection, java.lang.String selectionArgs[], java.lang.String sortOrder)

public intupdate(Uri uri, ContentValues contentValues, java.lang.String s, java.lang.String strings[])

from java.lang.Objectclone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructors

public DropDataContentProvider()

Methods

public boolean onCreate()

public ParcelFileDescriptor openFile(Uri uri, java.lang.String mode)

public Cursor query(Uri uri, java.lang.String projection[], java.lang.String selection, java.lang.String selectionArgs[], java.lang.String sortOrder)

public java.lang.String getType(Uri uri)

public Uri insert(Uri uri, ContentValues contentValues)

public int delete(Uri uri, java.lang.String selection, java.lang.String selectionArgs[])

public int update(Uri uri, ContentValues contentValues, java.lang.String s, java.lang.String strings[])

public Bundle call(java.lang.String method, java.lang.String arg, Bundle extras)

Source

/*
 * Copyright 2022 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package androidx.webkit;

import android.content.ContentProvider;
import android.content.ContentValues;
import android.database.Cursor;
import android.net.Uri;
import android.os.Bundle;
import android.os.ParcelFileDescriptor;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.webkit.internal.WebViewGlueCommunicator;

import org.chromium.support_lib_boundary.DropDataContentProviderBoundaryInterface;

import java.io.FileNotFoundException;

/**
 * WebView provides partial support for Android
 * <a href="https://developer.android.com/develop/ui/views/touch-and-input/drag-drop">
 * Drag and Drop</a> allowing images, text and links to be dragged out of a WebView.
 *
 * The content provider is required to make the images drag work, to enable, you should add this
 * class to your manifest, for example:
 *
 * <pre class="prettyprint">
 *  &lt;provider
 *             android:authorities="&lt;your-package&gt;.DropDataProvider"
 *             android:name="androidx.webkit.DropDataContentProvider"
 *             android:exported="false"
 *             android:grantUriPermissions="true"/&gt;
 * </pre>
 *
 */
public final class DropDataContentProvider extends ContentProvider {
    DropDataContentProviderBoundaryInterface mImpl;

    @Override
    public boolean onCreate() {
        return true;
    }

    @Nullable
    @Override
    public ParcelFileDescriptor openFile(@NonNull Uri uri, @NonNull String mode)
            throws FileNotFoundException {
        return getDropImpl().openFile(this, uri);
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] projection,
            @Nullable String selection, @Nullable String[] selectionArgs,
            @Nullable String sortOrder) {
        return getDropImpl().query(uri, projection, selection, selectionArgs, sortOrder);
    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return getDropImpl().getType(uri);
    }

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) {
        throw new UnsupportedOperationException("Insert method is not supported.");
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String selection,
            @Nullable String[] selectionArgs) {
        throw new UnsupportedOperationException("delete method is not supported.");
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s,
            @Nullable String[] strings) {
        throw new UnsupportedOperationException("update method is not supported.");
    }

    @Nullable
    @Override
    public Bundle call(@NonNull String method, @Nullable String arg, @Nullable Bundle extras) {
        return getDropImpl().call(method, arg, extras);
    }

    private DropDataContentProviderBoundaryInterface getDropImpl() {
        if (mImpl == null) {
            mImpl = WebViewGlueCommunicator.getFactory().getDropDataProvider();
            mImpl.onCreate();
        }
        return mImpl;
    }
}