Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 02c8730c authored by Kenny Root's avatar Kenny Root
Browse files

Add API to call to vold for mounting OBBs

* Unhide StorageService class; hide all the USB-related items

* Add application-visible API to StorageManager for OBB files

* Add class for parceling OBB info across binders (ObbInfo)

* Add a JNI glue class to libutils/ObbFile (ObbScanner)

* Add API to MountService to deal with calling into vold and checking
  permissions

Change-Id: I33ecf9606b8ff535f3a2ada83931da6bbef41cfd
parent c5ed5910
Loading
Loading
Loading
Loading
+79 −0
Original line number Diff line number Diff line
@@ -38302,6 +38302,17 @@
 visibility="public"
>
</field>
<field name="STORAGE_SERVICE"
 type="java.lang.String"
 transient="false"
 volatile="false"
 value="&quot;storage&quot;"
 static="true"
 final="true"
 deprecated="not deprecated"
 visibility="public"
>
</field>
<field name="TELEPHONY_SERVICE"
 type="java.lang.String"
 transient="false"
@@ -125618,6 +125629,74 @@
</method>
</class>
</package>
<package name="android.os.storage"
>
<class name="StorageManager"
 extends="java.lang.Object"
 abstract="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<method name="getMountedObbPath"
 return="java.lang.String"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="filename" type="java.lang.String">
</parameter>
</method>
<method name="isObbMounted"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="filename" type="java.lang.String">
</parameter>
</method>
<method name="mountObb"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="filename" type="java.lang.String">
</parameter>
<parameter name="key" type="java.lang.String">
</parameter>
</method>
<method name="unmountObb"
 return="boolean"
 abstract="false"
 native="false"
 synchronized="false"
 static="false"
 final="false"
 deprecated="not deprecated"
 visibility="public"
>
<parameter name="filename" type="java.lang.String">
</parameter>
<parameter name="force" type="boolean">
</parameter>
</method>
</class>
</package>
<package name="android.preference"
>
<class name="CheckBoxPreference"
+1 −2
Original line number Diff line number Diff line
@@ -1372,9 +1372,8 @@ public abstract class Context {
    public static final String SENSOR_SERVICE = "sensor";
    
    /**
     * @hide
     * Use with {@link #getSystemService} to retrieve a {@link
     * android.os.storage.StorageManager} for accesssing system storage
     * android.os.storage.StorageManager} for accessing system storage
     * functions.
     *
     * @see #getSystemService
+19 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 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 android.content.res;

parcelable ObbInfo;
+71 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 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 android.content.res;

import android.os.Parcel;
import android.os.Parcelable;

/**
 * Basic information about a Opaque Binary Blob (OBB) that reflects
 * the info from the footer on the OBB file.
 * @hide
 */
public class ObbInfo implements Parcelable {
    /**
     * The name of the package to which the OBB file belongs.
     */
    public String packageName;

    /**
     * The version of the package to which the OBB file belongs.
     */
    public int version;

    public ObbInfo() {
    }

    public String toString() {
        return "ObbInfo{"
            + Integer.toHexString(System.identityHashCode(this))
            + " packageName=" + packageName + ",version=" + version + "}";
    }

    public int describeContents() {
        return 0;
    }

    public void writeToParcel(Parcel dest, int parcelableFlags) {
        dest.writeString(packageName);
        dest.writeInt(version);
    }

    public static final Parcelable.Creator<ObbInfo> CREATOR
            = new Parcelable.Creator<ObbInfo>() {
        public ObbInfo createFromParcel(Parcel source) {
            return new ObbInfo(source);
        }

        public ObbInfo[] newArray(int size) {
            return new ObbInfo[size];
        }
    };

    private ObbInfo(Parcel source) {
        packageName = source.readString();
        version = source.readInt();
    }
}
+40 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2010 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 android.content.res;

/**
 * Class to scan Opaque Binary Blob (OBB) files.
 * @hide
 */
public class ObbScanner {
    // Don't allow others to instantiate this class
    private ObbScanner() {}

    public static ObbInfo getObbInfo(String filePath) {
        if (filePath == null) {
            return null;
        }

        ObbInfo obbInfo = new ObbInfo();
        if (!getObbInfo_native(filePath, obbInfo)) {
            throw new IllegalArgumentException("Could not read OBB file: " + filePath);
        }
        return obbInfo;
    }

    private native static boolean getObbInfo_native(String filePath, ObbInfo obbInfo);
}
Loading