alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

Android example source code file (BridgeContext.java)

This example Android source code file (BridgeContext.java) is included in the DevDaily.com "Java Source Code Warehouse" project. The intent of this project is to help you "Learn Android by Example" TM.

Java - Android tags/keywords

android, bridgetypedarray, bridgexmlblockparser, content, file, hashmap, integer, io, iresourcevalue, istyleresourcevalue, map, object, os, override, string, suppresswarnings, treemap, typedarray, ui, util

The BridgeContext.java Android example source code

/*
 * Copyright (C) 2008 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 com.android.layoutlib.bridge;

import com.android.layoutlib.api.ILayoutLog;
import com.android.layoutlib.api.IProjectCallback;
import com.android.layoutlib.api.IResourceValue;
import com.android.layoutlib.api.IStyleResourceValue;

import android.content.BroadcastReceiver;
import android.content.ComponentName;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.IntentSender;
import android.content.ServiceConnection;
import android.content.SharedPreferences;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageManager;
import android.content.res.AssetManager;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.content.res.Resources.Theme;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteDatabase.CursorFactory;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.BridgeInflater;
import android.view.View;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;
import java.util.Map.Entry;

/**
 * Custom implementation of Context to handle non compiled resources.
 */
public final class BridgeContext extends Context {

    private final Resources mResources;
    private final Theme mTheme;
    private final HashMap<View, Object> mViewKeyMap = new HashMap();
    private final IStyleResourceValue mThemeValues;
    private final Object mProjectKey;
    private final Map<String, Map mProjectResources;
    private final Map<String, Map mFrameworkResources;
    private final Map<IStyleResourceValue, IStyleResourceValue> mStyleInheritanceMap;

    // maps for dynamically generated id representing style objects (IStyleResourceValue)
    private Map<Integer, IStyleResourceValue> mDynamicIdToStyleMap;
    private Map<IStyleResourceValue, Integer> mStyleToDynamicIdMap;
    private int mDynamicIdGenerator = 0x01030000; // Base id for framework R.style

    // cache for TypedArray generated from IStyleResourceValue object
    private Map<int[], Map mTypedArrayCache;
    private BridgeInflater mInflater;

    private final IProjectCallback mProjectCallback;
    private final ILayoutLog mLogger;
    private BridgeContentResolver mContentResolver;

    /**
     * @param projectKey An Object identifying the project. This is used for the cache mechanism.
     * @param metrics the {@link DisplayMetrics}.
     * @param themeName The name of the theme to use.
     * @param projectResources the resources of the project. The map contains (String, map) pairs
     * where the string is the type of the resource reference used in the layout file, and the
     * map contains (String, {@link IResourceValue}) pairs where the key is the resource name,
     * and the value is the resource value.
     * @param frameworkResources the framework resources. The map contains (String, map) pairs
     * where the string is the type of the resource reference used in the layout file, and the map
     * contains (String, {@link IResourceValue}) pairs where the key is the resource name, and the
     * value is the resource value.
     * @param styleInheritanceMap
     * @param customViewLoader
     */
    public BridgeContext(Object projectKey, DisplayMetrics metrics,
            IStyleResourceValue currentTheme,
            Map<String, Map projectResources,
            Map<String, Map frameworkResources,
            Map<IStyleResourceValue, IStyleResourceValue> styleInheritanceMap,
            IProjectCallback customViewLoader, ILayoutLog logger) {
        mProjectKey = projectKey;
        mProjectCallback = customViewLoader;
        mLogger = logger;
        Configuration config = new Configuration();

        AssetManager assetManager = BridgeAssetManager.initSystem();
        mResources = BridgeResources.initSystem(
                this,
                assetManager,
                metrics,
                config,
                customViewLoader);

        mTheme = mResources.newTheme();

        mThemeValues = currentTheme;
        mProjectResources = projectResources;
        mFrameworkResources = frameworkResources;
        mStyleInheritanceMap = styleInheritanceMap;
    }

    public void setBridgeInflater(BridgeInflater inflater) {
        mInflater = inflater;
    }

    public void addViewKey(View view, Object viewKey) {
        mViewKeyMap.put(view, viewKey);
    }

    public Object getViewKey(View view) {
        return mViewKeyMap.get(view);
    }

    public Object getProjectKey() {
        return mProjectKey;
    }

    public IProjectCallback getProjectCallback() {
        return mProjectCallback;
    }

    public ILayoutLog getLogger() {
        return mLogger;
    }

    // ------------ Context methods

    @Override
    public Resources getResources() {
        return mResources;
    }

    @Override
    public Theme getTheme() {
        return mTheme;
    }

    @Override
    public ClassLoader getClassLoader() {
        return this.getClass().getClassLoader();
    }

    @Override
    public Object getSystemService(String service) {
        if (LAYOUT_INFLATER_SERVICE.equals(service)) {
            return mInflater;
        }

        // AutoCompleteTextView and MultiAutoCompleteTextView want a window
        // service. We don't have any but it's not worth an exception.
        if (WINDOW_SERVICE.equals(service)) {
            return null;
        }

        throw new UnsupportedOperationException("Unsupported Service: " + service);
    }


    @Override
    public final TypedArray obtainStyledAttributes(int[] attrs) {
        return createStyleBasedTypedArray(mThemeValues, attrs);
    }

    @Override
    public final TypedArray obtainStyledAttributes(int resid, int[] attrs)
            throws Resources.NotFoundException {
        // get the IStyleResourceValue based on the resId;
        IStyleResourceValue style = getStyleByDynamicId(resid);

        if (style == null) {
            throw new Resources.NotFoundException();
        }

        if (mTypedArrayCache == null) {
            mTypedArrayCache = new HashMap<int[], Map();

            Map<Integer, TypedArray> map = new HashMap();
            mTypedArrayCache.put(attrs, map);

            BridgeTypedArray ta = createStyleBasedTypedArray(style, attrs);
            map.put(resid, ta);

            return ta;
        }

        // get the 2nd map
        Map<Integer, TypedArray> map = mTypedArrayCache.get(attrs);
        if (map == null) {
            map = new HashMap<Integer, TypedArray>();
            mTypedArrayCache.put(attrs, map);
        }

        // get the array from the 2nd map
        TypedArray ta = map.get(resid);

        if (ta == null) {
            ta = createStyleBasedTypedArray(style, attrs);
            map.put(resid, ta);
        }

        return ta;
    }

    @Override
    public final TypedArray obtainStyledAttributes(AttributeSet set, int[] attrs) {
        return obtainStyledAttributes(set, attrs, 0, 0);
    }

    @Override
    public TypedArray obtainStyledAttributes(AttributeSet set, int[] attrs,
            int defStyleAttr, int defStyleRes) {

        // Hint: for XmlPullParser, attach source //DEVICE_SRC/dalvik/libcore/xml/src/java
        BridgeXmlBlockParser parser = null;
        if (set instanceof BridgeXmlBlockParser) {
            parser = (BridgeXmlBlockParser)set;
        } else {
            // reall this should not be happening since its instantiated in Bridge
            mLogger.error("Parser is not a BridgeXmlBlockParser!");
            return null;
        }

        boolean[] frameworkAttributes = new boolean[1];
        TreeMap<Integer, String> styleNameMap = searchAttrs(attrs, frameworkAttributes);

        BridgeTypedArray ta = ((BridgeResources) mResources).newTypeArray(attrs.length,
                parser.isPlatformFile());

        // resolve the defStyleAttr value into a IStyleResourceValue
        IStyleResourceValue defStyleValues = null;

        // look for a custom style.
        String customStyle = parser.getAttributeValue(null /* namespace*/, "style");
        if (customStyle != null) {
            IResourceValue item = findResValue(customStyle);

            if (item instanceof IStyleResourceValue) {
                defStyleValues = (IStyleResourceValue)item;
            }
        }

        if (defStyleValues == null && defStyleAttr != 0) {
            // get the name from the int.
            String defStyleName = searchAttr(defStyleAttr);

            // look for the style in the current theme, and its parent:
            if (mThemeValues != null) {
                IResourceValue item = findItemInStyle(mThemeValues, defStyleName);

                if (item != null) {
                    // item is a reference to a style entry. Search for it.
                    item = findResValue(item.getValue());

                    if (item instanceof IStyleResourceValue) {
                        defStyleValues = (IStyleResourceValue)item;
                    }
                } else {
                    // TODO: log the error properly
                    System.out.println("Failed to find defStyle: " + defStyleName);
                }
            }
        }

        if (defStyleRes != 0) {
            // FIXME: See what we need to do with this.
            throw new UnsupportedOperationException();
        }

        String namespace = BridgeConstants.NS_RESOURCES;
        if (frameworkAttributes[0] == false) {
            // need to use the application namespace
            namespace = mProjectCallback.getNamespace();
        }

        if (styleNameMap != null) {
            for (Entry<Integer, String> styleAttribute : styleNameMap.entrySet()) {
                int index = styleAttribute.getKey().intValue();

                String name = styleAttribute.getValue();
                String value = parser.getAttributeValue(namespace, name);

                // if there's no direct value for this attribute in the XML, we look for default
                // values in the widget defStyle, and then in the theme.
                if (value == null) {
                    IResourceValue resValue = null;

                    // look for the value in the defStyle first (and its parent if needed)
                    if (defStyleValues != null) {
                        resValue = findItemInStyle(defStyleValues, name);
                    }

                    // if the item is not present in the defStyle, we look in the main theme (and
                    // its parent themes)
                    if (resValue == null && mThemeValues != null) {
                        resValue = findItemInStyle(mThemeValues, name);
                    }

                    // if we found a value, we make sure this doesn't reference another value.
                    // So we resolve it.
                    if (resValue != null) {
                        resValue = resolveResValue(resValue);
                    }

                    ta.bridgeSetValue(index, name, resValue);
                } else {
                    // there is a value in the XML, but we need to resolve it in case it's
                    // referencing another resource or a theme value.
                    ta.bridgeSetValue(index, name, resolveValue(null, name, value));
                }
            }
        }

        ta.sealArray();

        return ta;
    }

    @Override
    public Looper getMainLooper() {
        return Looper.myLooper();
    }


    // ------------- private new methods

    /**
     * Creates a {@link BridgeTypedArray} by filling the values defined by the int[] with the
     * values found in the given style.
     * @see #obtainStyledAttributes(int, int[])
     */
    private BridgeTypedArray createStyleBasedTypedArray(IStyleResourceValue style, int[] attrs)
            throws Resources.NotFoundException {
        TreeMap<Integer, String> styleNameMap = searchAttrs(attrs, null);

        BridgeTypedArray ta = ((BridgeResources) mResources).newTypeArray(attrs.length,
                false /* platformResourceFlag */);

        // loop through all the values in the style map, and init the TypedArray with
        // the style we got from the dynamic id
        for (Entry<Integer, String> styleAttribute : styleNameMap.entrySet()) {
            int index = styleAttribute.getKey().intValue();

            String name = styleAttribute.getValue();

            // get the value from the style, or its parent styles.
            IResourceValue resValue = findItemInStyle(style, name);

            // resolve it to make sure there are no references left.
            ta.bridgeSetValue(index, name, resolveResValue(resValue));
        }

        ta.sealArray();

        return ta;
    }


    /**
     * Resolves the value of a resource, if the value references a theme or resource value.
     * <p/>
     * This method ensures that it returns a {@link IResourceValue} object that does not
     * reference another resource.
     * If the resource cannot be resolved, it returns <code>null.
     * <p/>
     * If a value that does not need to be resolved is given, the method will return a new
     * instance of IResourceValue that contains the input value.
     *
     * @param type the type of the resource
     * @param name the name of the attribute containing this value.
     * @param value the resource value, or reference to resolve
     * @return the resolved resource value or <code>null if it failed to resolve it.
     */
    private IResourceValue resolveValue(String type, String name, String value) {
        if (value == null) {
            return null;
        }

        // get the IResourceValue referenced by this value
        IResourceValue resValue = findResValue(value);

        // if resValue is null, but value is not null, this means it was not a reference.
        // we return the name/value wrapper in a IResourceValue
        if (resValue == null) {
            return new ResourceValue(type, name, value);
        }

        // we resolved a first reference, but we need to make sure this isn't a reference also.
        return resolveResValue(resValue);
    }

    /**
     * Returns the {@link IResourceValue} referenced by the value of <var>value.
     * <p/>
     * This method ensures that it returns a {@link IResourceValue} object that does not
     * reference another resource.
     * If the resource cannot be resolved, it returns <code>null.
     * <p/>
     * If a value that does not need to be resolved is given, the method will return the input
     * value.
     *
     * @param value the value containing the reference to resolve.
     * @return a {@link IResourceValue} object or <code>null
     */
    IResourceValue resolveResValue(IResourceValue value) {
        if (value == null) {
            return null;
        }

        // if the resource value is a style, we simply return it.
        if (value instanceof IStyleResourceValue) {
            return value;
        }

        // else attempt to find another IResourceValue referenced by this one.
        IResourceValue resolvedValue = findResValue(value.getValue());

        // if the value did not reference anything, then we simply return the input value
        if (resolvedValue == null) {
            return value;
        }

        // otherwise, we attempt to resolve this new value as well
        return resolveResValue(resolvedValue);
    }

    /**
     * Searches for, and returns a {@link IResourceValue} by its reference.
     * <p/>
     * The reference format can be:
     * <pre>@resType/resName
* <pre>@android:resType/resName * <pre>@resType/android:resName * <pre>?resType/resName * <pre>?android:resType/resName * <pre>?resType/android:resName * Any other string format will return <code>null. * <p/> * The actual format of a reference is <pre>@[namespace:]resType/resName but this method * only support the android namespace. * * @param reference the resource reference to search for. * @return a {@link IResourceValue} or <code>null. */ IResourceValue findResValue(String reference) { if (reference == null) { return null; } if (reference.startsWith(BridgeConstants.PREFIX_THEME_REF)) { // no theme? no need to go further! if (mThemeValues == null) { return null; } boolean frameworkOnly = false; // eleminate the prefix from the string if (reference.startsWith(BridgeConstants.PREFIX_ANDROID_THEME_REF)) { frameworkOnly = true; reference = reference.substring(BridgeConstants.PREFIX_ANDROID_THEME_REF.length()); } else { reference = reference.substring(BridgeConstants.PREFIX_THEME_REF.length()); } // at this point, value can contain type/name (drawable/foo for instance). // split it to make sure. String[] segments = reference.split("\\/"); // we look for the referenced item name. String referenceName = null; if (segments.length == 2) { // there was a resType in the reference. If it's attr, we ignore it // else, we assert for now. if (BridgeConstants.RES_ATTR.equals(segments[0])) { referenceName = segments[1]; } else { // At this time, no support for ?type/name where type is not "attr" return null; } } else { // it's just an item name. referenceName = segments[0]; } // now we look for android: in the referenceName in order to support format // such as: ?attr/android:name if (referenceName.startsWith(BridgeConstants.PREFIX_ANDROID)) { frameworkOnly = true; referenceName = referenceName.substring(BridgeConstants.PREFIX_ANDROID.length()); } // Now look for the item in the theme, starting with the current one. if (frameworkOnly) { // FIXME for now we do the same as if it didn't specify android: return findItemInStyle(mThemeValues, referenceName); } return findItemInStyle(mThemeValues, referenceName); } else if (reference.startsWith(BridgeConstants.PREFIX_RESOURCE_REF)) { boolean frameworkOnly = false; // check for the specific null reference value. if (BridgeConstants.REFERENCE_NULL.equals(reference)) { return null; } // Eliminate the prefix from the string. if (reference.startsWith(BridgeConstants.PREFIX_ANDROID_RESOURCE_REF)) { frameworkOnly = true; reference = reference.substring( BridgeConstants.PREFIX_ANDROID_RESOURCE_REF.length()); } else { reference = reference.substring(BridgeConstants.PREFIX_RESOURCE_REF.length()); } // at this point, value contains type/[android:]name (drawable/foo for instance) String[] segments = reference.split("\\/"); // now we look for android: in the resource name in order to support format // such as: @drawable/android:name if (segments[1].startsWith(BridgeConstants.PREFIX_ANDROID)) { frameworkOnly = true; segments[1] = segments[1].substring(BridgeConstants.PREFIX_ANDROID.length()); } return findResValue(segments[0], segments[1], frameworkOnly); } // Looks like the value didn't reference anything. Return null. return null; } /** * Searches for, and returns a {@link IResourceValue} by its name, and type. * @param resType the type of the resource * @param resName the name of the resource * @param frameworkOnly if <code>true, the method does not search in the * project resources */ private IResourceValue findResValue(String resType, String resName, boolean frameworkOnly) { // map of IResouceValue for the given type Map<String, IResourceValue> typeMap; // if allowed, search in the project resources first. if (frameworkOnly == false) { typeMap = mProjectResources.get(resType); if (typeMap != null) { IResourceValue item = typeMap.get(resName); if (item != null) { return item; } } } // now search in the framework resources. typeMap = mFrameworkResources.get(resType); if (typeMap != null) { IResourceValue item = typeMap.get(resName); if (item != null) { return item; } } // didn't find the resource anywhere. return null; } /** * Returns a framework resource by type and name. The returned resource is resolved. * @param resourceType the type of the resource * @param resourceName the name of the resource */ public IResourceValue getFrameworkResource(String resourceType, String resourceName) { return getResource(resourceType, resourceName, mFrameworkResources); } /** * Returns a project resource by type and name. The returned resource is resolved. * @param resourceType the type of the resource * @param resourceName the name of the resource */ public IResourceValue getProjectResource(String resourceType, String resourceName) { return getResource(resourceType, resourceName, mProjectResources); } IResourceValue getResource(String resourceType, String resourceName, Map<String, Map resourceRepository) { Map<String, IResourceValue> typeMap = resourceRepository.get(resourceType); if (typeMap != null) { IResourceValue item = typeMap.get(resourceName); if (item != null) { item = resolveResValue(item); return item; } } // didn't find the resource anywhere. return null; } /** * Returns the {@link IResourceValue} matching a given name in a given style. If the * item is not directly available in the style, the method looks in its parent style. * @param style the style to search in * @param itemName the name of the item to search for. * @return the {@link IResourceValue} object or <code>null */ IResourceValue findItemInStyle(IStyleResourceValue style, String itemName) { IResourceValue item = style.findItem(itemName); // if we didn't find it, we look in the parent style (if applicable) if (item == null && mStyleInheritanceMap != null) { IStyleResourceValue parentStyle = mStyleInheritanceMap.get(style); if (parentStyle != null) { return findItemInStyle(parentStyle, itemName); } } return item; } /** * The input int[] attrs is one of com.android.internal.R.styleable fields where the name * of the field is the style being referenced and the array contains one index per attribute. * <p/> * searchAttrs() finds all the names of the attributes referenced so for example if * attrs == com.android.internal.R.styleable.View, this returns the list of the "xyz" where * there's a field com.android.internal.R.styleable.View_xyz and the field value is the index * that is used to reference the attribute later in the TypedArray. * * @param attrs An attribute array reference given to obtainStyledAttributes. * @return A sorted map Attribute-Value to Attribute-Name for all attributes declared by the * attribute array. Returns null if nothing is found. */ private TreeMap<Integer,String> searchAttrs(int[] attrs, boolean[] outFrameworkFlag) { // get the name of the array from the framework resources String arrayName = Bridge.resolveResourceValue(attrs); if (arrayName != null) { // if we found it, get the name of each of the int in the array. TreeMap<Integer,String> attributes = new TreeMap(); for (int i = 0 ; i < attrs.length ; i++) { String[] info = Bridge.resolveResourceValue(attrs[i]); if (info != null) { attributes.put(i, info[0]); } else { // FIXME Not sure what we should be doing here... attributes.put(i, null); } } if (outFrameworkFlag != null) { outFrameworkFlag[0] = true; } return attributes; } // if the name was not found in the framework resources, look in the project // resources arrayName = mProjectCallback.resolveResourceValue(attrs); if (arrayName != null) { TreeMap<Integer,String> attributes = new TreeMap(); for (int i = 0 ; i < attrs.length ; i++) { String[] info = mProjectCallback.resolveResourceValue(attrs[i]); if (info != null) { attributes.put(i, info[0]); } else { // FIXME Not sure what we should be doing here... attributes.put(i, null); } } if (outFrameworkFlag != null) { outFrameworkFlag[0] = false; } return attributes; } return null; } /** * Searches for the attribute referenced by its internal id. * * @param attr An attribute reference given to obtainStyledAttributes such as defStyle. * @return The unique name of the attribute, if found, e.g. "buttonStyle". Returns null * if nothing is found. */ public String searchAttr(int attr) { String[] info = Bridge.resolveResourceValue(attr); if (info != null) { return info[0]; } info = mProjectCallback.resolveResourceValue(attr); if (info != null) { return info[0]; } return null; } int getDynamicIdByStyle(IStyleResourceValue resValue) { if (mDynamicIdToStyleMap == null) { // create the maps. mDynamicIdToStyleMap = new HashMap<Integer, IStyleResourceValue>(); mStyleToDynamicIdMap = new HashMap<IStyleResourceValue, Integer>(); } // look for an existing id Integer id = mStyleToDynamicIdMap.get(resValue); if (id == null) { // generate a new id id = Integer.valueOf(++mDynamicIdGenerator); // and add it to the maps. mDynamicIdToStyleMap.put(id, resValue); mStyleToDynamicIdMap.put(resValue, id); } return id; } private IStyleResourceValue getStyleByDynamicId(int i) { if (mDynamicIdToStyleMap != null) { return mDynamicIdToStyleMap.get(i); } return null; } int getFrameworkIdValue(String idName, int defValue) { Integer value = Bridge.getResourceValue(BridgeConstants.RES_ID, idName); if (value != null) { return value.intValue(); } return defValue; } int getProjectIdValue(String idName, int defValue) { if (mProjectCallback != null) { Integer value = mProjectCallback.getResourceValue(BridgeConstants.RES_ID, idName); if (value != null) { return value.intValue(); } } return defValue; } //------------ NOT OVERRIDEN -------------------- @Override public boolean bindService(Intent arg0, ServiceConnection arg1, int arg2) { // TODO Auto-generated method stub return false; } @Override public int checkCallingOrSelfPermission(String arg0) { // TODO Auto-generated method stub return 0; } @Override public int checkCallingOrSelfUriPermission(Uri arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public int checkCallingPermission(String arg0) { // TODO Auto-generated method stub return 0; } @Override public int checkCallingUriPermission(Uri arg0, int arg1) { // TODO Auto-generated method stub return 0; } @Override public int checkPermission(String arg0, int arg1, int arg2) { // TODO Auto-generated method stub return 0; } @Override public int checkUriPermission(Uri arg0, int arg1, int arg2, int arg3) { // TODO Auto-generated method stub return 0; } @Override public int checkUriPermission(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5) { // TODO Auto-generated method stub return 0; } @Override public void clearWallpaper() { // TODO Auto-generated method stub } @Override public Context createPackageContext(String arg0, int arg1) { // TODO Auto-generated method stub return null; } @Override public String[] databaseList() { // TODO Auto-generated method stub return null; } @Override public boolean deleteDatabase(String arg0) { // TODO Auto-generated method stub return false; } @Override public boolean deleteFile(String arg0) { // TODO Auto-generated method stub return false; } @Override public void enforceCallingOrSelfPermission(String arg0, String arg1) { // TODO Auto-generated method stub } @Override public void enforceCallingOrSelfUriPermission(Uri arg0, int arg1, String arg2) { // TODO Auto-generated method stub } @Override public void enforceCallingPermission(String arg0, String arg1) { // TODO Auto-generated method stub } @Override public void enforceCallingUriPermission(Uri arg0, int arg1, String arg2) { // TODO Auto-generated method stub } @Override public void enforcePermission(String arg0, int arg1, int arg2, String arg3) { // TODO Auto-generated method stub } @Override public void enforceUriPermission(Uri arg0, int arg1, int arg2, int arg3, String arg4) { // TODO Auto-generated method stub } @Override public void enforceUriPermission(Uri arg0, String arg1, String arg2, int arg3, int arg4, int arg5, String arg6) { // TODO Auto-generated method stub } @Override public String[] fileList() { // TODO Auto-generated method stub return null; } @Override public AssetManager getAssets() { // TODO Auto-generated method stub return null; } @Override public File getCacheDir() { // TODO Auto-generated method stub return null; } @Override public File getExternalCacheDir() { // TODO Auto-generated method stub return null; } @Override public ContentResolver getContentResolver() { if (mContentResolver == null) { mContentResolver = new BridgeContentResolver(this); } return mContentResolver; } @Override public File getDatabasePath(String arg0) { // TODO Auto-generated method stub return null; } @Override public File getDir(String arg0, int arg1) { // TODO Auto-generated method stub return null; } @Override public File getFileStreamPath(String arg0) { // TODO Auto-generated method stub return null; } @Override public File getFilesDir() { // TODO Auto-generated method stub return null; } @Override public File getExternalFilesDir(String type) { // TODO Auto-generated method stub return null; } @Override public String getPackageCodePath() { // TODO Auto-generated method stub return null; } @Override public PackageManager getPackageManager() { // TODO Auto-generated method stub return null; } @Override public String getPackageName() { // TODO Auto-generated method stub return null; } @Override public ApplicationInfo getApplicationInfo() { // TODO Auto-generated method stub return null; } @Override public String getPackageResourcePath() { // TODO Auto-generated method stub return null; } @Override public File getSharedPrefsFile(String name) { // TODO Auto-generated method stub return null; } @Override public SharedPreferences getSharedPreferences(String arg0, int arg1) { // TODO Auto-generated method stub return null; } @Override public Drawable getWallpaper() { // TODO Auto-generated method stub return null; } @Override public int getWallpaperDesiredMinimumWidth() { return -1; } @Override public int getWallpaperDesiredMinimumHeight() { return -1; } @Override public void grantUriPermission(String arg0, Uri arg1, int arg2) { // TODO Auto-generated method stub } @SuppressWarnings("unused") @Override public FileInputStream openFileInput(String arg0) throws FileNotFoundException { // TODO Auto-generated method stub return null; } @SuppressWarnings("unused") @Override public FileOutputStream openFileOutput(String arg0, int arg1) throws FileNotFoundException { // TODO Auto-generated method stub return null; } @Override public SQLiteDatabase openOrCreateDatabase(String arg0, int arg1, CursorFactory arg2) { // TODO Auto-generated method stub return null; } @Override public Drawable peekWallpaper() { // TODO Auto-generated method stub return null; } @Override public Intent registerReceiver(BroadcastReceiver arg0, IntentFilter arg1) { // TODO Auto-generated method stub return null; } @Override public Intent registerReceiver(BroadcastReceiver arg0, IntentFilter arg1, String arg2, Handler arg3) { // TODO Auto-generated method stub return null; } @Override public void removeStickyBroadcast(Intent arg0) { // TODO Auto-generated method stub } @Override public void revokeUriPermission(Uri arg0, int arg1) { // TODO Auto-generated method stub } @Override public void sendBroadcast(Intent arg0) { // TODO Auto-generated method stub } @Override public void sendBroadcast(Intent arg0, String arg1) { // TODO Auto-generated method stub } @Override public void sendOrderedBroadcast(Intent arg0, String arg1) { // TODO Auto-generated method stub } @Override public void sendOrderedBroadcast(Intent arg0, String arg1, BroadcastReceiver arg2, Handler arg3, int arg4, String arg5, Bundle arg6) { // TODO Auto-generated method stub } @Override public void sendStickyBroadcast(Intent arg0) { // TODO Auto-generated method stub } @Override public void sendStickyOrderedBroadcast(Intent intent, BroadcastReceiver resultReceiver, Handler scheduler, int initialCode, String initialData, Bundle initialExtras) { // TODO Auto-generated method stub } @Override public void setTheme(int arg0) { // TODO Auto-generated method stub } @SuppressWarnings("unused") @Override public void setWallpaper(Bitmap arg0) throws IOException { // TODO Auto-generated method stub } @SuppressWarnings("unused") @Override public void setWallpaper(InputStream arg0) throws IOException { // TODO Auto-generated method stub } @Override public void startActivity(Intent arg0) { // TODO Auto-generated method stub } @Override public void startIntentSender(IntentSender intent, Intent fillInIntent, int flagsMask, int flagsValues, int extraFlags) throws IntentSender.SendIntentException { // TODO Auto-generated method stub } @Override public boolean startInstrumentation(ComponentName arg0, String arg1, Bundle arg2) { // TODO Auto-generated method stub return false; } @Override public ComponentName startService(Intent arg0) { // TODO Auto-generated method stub return null; } @Override public boolean stopService(Intent arg0) { // TODO Auto-generated method stub return false; } @Override public void unbindService(ServiceConnection arg0) { // TODO Auto-generated method stub } @Override public void unregisterReceiver(BroadcastReceiver arg0) { // TODO Auto-generated method stub } @Override public Context getApplicationContext() { throw new UnsupportedOperationException(); } }

Other Android examples (source code examples)

Here is a short list of links related to this Android BridgeContext.java source code file:

... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.