Search in sources :

Example 11 with JournaledFile

use of com.android.internal.util.JournaledFile in project android_frameworks_base by crdroidandroid.

the class Settings method writePackageListLPr.

void writePackageListLPr(int creatingUserId) {
    // Only derive GIDs for active users (not dying)
    final List<UserInfo> users = UserManagerService.getInstance().getUsers(true);
    int[] userIds = new int[users.size()];
    for (int i = 0; i < userIds.length; i++) {
        userIds[i] = users.get(i).id;
    }
    if (creatingUserId != -1) {
        userIds = ArrayUtils.appendInt(userIds, creatingUserId);
    }
    // Write package list file now, use a JournaledFile.
    File tempFile = new File(mPackageListFilename.getAbsolutePath() + ".tmp");
    JournaledFile journal = new JournaledFile(mPackageListFilename, tempFile);
    final File writeTarget = journal.chooseForWrite();
    FileOutputStream fstr;
    BufferedWriter writer = null;
    try {
        fstr = new FileOutputStream(writeTarget);
        writer = new BufferedWriter(new OutputStreamWriter(fstr, Charset.defaultCharset()));
        FileUtils.setPermissions(fstr.getFD(), 0640, SYSTEM_UID, PACKAGE_INFO_GID);
        StringBuilder sb = new StringBuilder();
        for (final PackageSetting pkg : mPackages.values()) {
            if (pkg.pkg == null || pkg.pkg.applicationInfo == null || pkg.pkg.applicationInfo.dataDir == null) {
                if (!"android".equals(pkg.name)) {
                    Slog.w(TAG, "Skipping " + pkg + " due to missing metadata");
                }
                continue;
            }
            final ApplicationInfo ai = pkg.pkg.applicationInfo;
            final String dataPath = ai.dataDir;
            final boolean isDebug = (ai.flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0;
            final int[] gids = pkg.getPermissionsState().computeGids(userIds);
            // Avoid any application that has a space in its path.
            if (dataPath.indexOf(' ') >= 0)
                continue;
            // we store on each line the following information for now:
            //
            // pkgName    - package name
            // userId     - application-specific user id
            // debugFlag  - 0 or 1 if the package is debuggable.
            // dataPath   - path to package's data path
            // seinfo     - seinfo label for the app (assigned at install time)
            // gids       - supplementary gids this app launches with
            //
            // NOTE: We prefer not to expose all ApplicationInfo flags for now.
            //
            // DO NOT MODIFY THIS FORMAT UNLESS YOU CAN ALSO MODIFY ITS USERS
            // FROM NATIVE CODE. AT THE MOMENT, LOOK AT THE FOLLOWING SOURCES:
            //   frameworks/base/libs/packagelistparser
            //   system/core/run-as/run-as.c
            //
            sb.setLength(0);
            sb.append(ai.packageName);
            sb.append(" ");
            sb.append(ai.uid);
            sb.append(isDebug ? " 1 " : " 0 ");
            sb.append(dataPath);
            sb.append(" ");
            sb.append(ai.seinfo);
            sb.append(" ");
            if (gids != null && gids.length > 0) {
                sb.append(gids[0]);
                for (int i = 1; i < gids.length; i++) {
                    sb.append(",");
                    sb.append(gids[i]);
                }
            } else {
                sb.append("none");
            }
            sb.append("\n");
            writer.append(sb);
        }
        writer.flush();
        FileUtils.sync(fstr);
        writer.close();
        journal.commit();
    } catch (Exception e) {
        Slog.wtf(TAG, "Failed to write packages.list", e);
        IoUtils.closeQuietly(writer);
        journal.rollback();
    }
}
Also used : JournaledFile(com.android.internal.util.JournaledFile) ApplicationInfo(android.content.pm.ApplicationInfo) UserInfo(android.content.pm.UserInfo) FileNotFoundException(java.io.FileNotFoundException) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) InstallerException(com.android.internal.os.InstallerConnection.InstallerException) IOException(java.io.IOException) BufferedWriter(java.io.BufferedWriter) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) AtomicFile(android.util.AtomicFile) File(java.io.File) JournaledFile(com.android.internal.util.JournaledFile)

Example 12 with JournaledFile

use of com.android.internal.util.JournaledFile in project platform_frameworks_base by android.

the class DevicePolicyManagerService method saveSettingsLocked.

private void saveSettingsLocked(int userHandle) {
    DevicePolicyData policy = getUserData(userHandle);
    JournaledFile journal = makeJournaledFile(userHandle);
    FileOutputStream stream = null;
    try {
        stream = new FileOutputStream(journal.chooseForWrite(), false);
        XmlSerializer out = new FastXmlSerializer();
        out.setOutput(stream, StandardCharsets.UTF_8.name());
        out.startDocument(null, true);
        out.startTag(null, "policies");
        if (policy.mRestrictionsProvider != null) {
            out.attribute(null, ATTR_PERMISSION_PROVIDER, policy.mRestrictionsProvider.flattenToString());
        }
        if (policy.mUserSetupComplete) {
            out.attribute(null, ATTR_SETUP_COMPLETE, Boolean.toString(true));
        }
        if (policy.mPaired) {
            out.attribute(null, ATTR_DEVICE_PAIRED, Boolean.toString(true));
        }
        if (policy.mDeviceProvisioningConfigApplied) {
            out.attribute(null, ATTR_DEVICE_PROVISIONING_CONFIG_APPLIED, Boolean.toString(true));
        }
        if (policy.mUserProvisioningState != DevicePolicyManager.STATE_USER_UNMANAGED) {
            out.attribute(null, ATTR_PROVISIONING_STATE, Integer.toString(policy.mUserProvisioningState));
        }
        if (policy.mPermissionPolicy != DevicePolicyManager.PERMISSION_POLICY_PROMPT) {
            out.attribute(null, ATTR_PERMISSION_POLICY, Integer.toString(policy.mPermissionPolicy));
        }
        if (policy.mDelegatedCertInstallerPackage != null) {
            out.attribute(null, ATTR_DELEGATED_CERT_INSTALLER, policy.mDelegatedCertInstallerPackage);
        }
        if (policy.mApplicationRestrictionsManagingPackage != null) {
            out.attribute(null, ATTR_APPLICATION_RESTRICTIONS_MANAGER, policy.mApplicationRestrictionsManagingPackage);
        }
        final int N = policy.mAdminList.size();
        for (int i = 0; i < N; i++) {
            ActiveAdmin ap = policy.mAdminList.get(i);
            if (ap != null) {
                out.startTag(null, "admin");
                out.attribute(null, "name", ap.info.getComponent().flattenToString());
                ap.writeToXml(out);
                out.endTag(null, "admin");
            }
        }
        if (policy.mPasswordOwner >= 0) {
            out.startTag(null, "password-owner");
            out.attribute(null, "value", Integer.toString(policy.mPasswordOwner));
            out.endTag(null, "password-owner");
        }
        if (policy.mFailedPasswordAttempts != 0) {
            out.startTag(null, "failed-password-attempts");
            out.attribute(null, "value", Integer.toString(policy.mFailedPasswordAttempts));
            out.endTag(null, "failed-password-attempts");
        }
        if (policy.mActivePasswordQuality != 0 || policy.mActivePasswordLength != 0 || policy.mActivePasswordUpperCase != 0 || policy.mActivePasswordLowerCase != 0 || policy.mActivePasswordLetters != 0 || policy.mActivePasswordNumeric != 0 || policy.mActivePasswordSymbols != 0 || policy.mActivePasswordNonLetter != 0) {
            out.startTag(null, "active-password");
            out.attribute(null, "quality", Integer.toString(policy.mActivePasswordQuality));
            out.attribute(null, "length", Integer.toString(policy.mActivePasswordLength));
            out.attribute(null, "uppercase", Integer.toString(policy.mActivePasswordUpperCase));
            out.attribute(null, "lowercase", Integer.toString(policy.mActivePasswordLowerCase));
            out.attribute(null, "letters", Integer.toString(policy.mActivePasswordLetters));
            out.attribute(null, "numeric", Integer.toString(policy.mActivePasswordNumeric));
            out.attribute(null, "symbols", Integer.toString(policy.mActivePasswordSymbols));
            out.attribute(null, "nonletter", Integer.toString(policy.mActivePasswordNonLetter));
            out.endTag(null, "active-password");
        }
        for (int i = 0; i < policy.mAcceptedCaCertificates.size(); i++) {
            out.startTag(null, TAG_ACCEPTED_CA_CERTIFICATES);
            out.attribute(null, ATTR_NAME, policy.mAcceptedCaCertificates.valueAt(i));
            out.endTag(null, TAG_ACCEPTED_CA_CERTIFICATES);
        }
        for (int i = 0; i < policy.mLockTaskPackages.size(); i++) {
            String component = policy.mLockTaskPackages.get(i);
            out.startTag(null, TAG_LOCK_TASK_COMPONENTS);
            out.attribute(null, "name", component);
            out.endTag(null, TAG_LOCK_TASK_COMPONENTS);
        }
        if (policy.mStatusBarDisabled) {
            out.startTag(null, TAG_STATUS_BAR);
            out.attribute(null, ATTR_DISABLED, Boolean.toString(policy.mStatusBarDisabled));
            out.endTag(null, TAG_STATUS_BAR);
        }
        if (policy.doNotAskCredentialsOnBoot) {
            out.startTag(null, DO_NOT_ASK_CREDENTIALS_ON_BOOT_XML);
            out.endTag(null, DO_NOT_ASK_CREDENTIALS_ON_BOOT_XML);
        }
        for (String id : policy.mAffiliationIds) {
            out.startTag(null, TAG_AFFILIATION_ID);
            out.attribute(null, "id", id);
            out.endTag(null, TAG_AFFILIATION_ID);
        }
        if (policy.mAdminBroadcastPending) {
            out.startTag(null, TAG_ADMIN_BROADCAST_PENDING);
            out.attribute(null, ATTR_VALUE, Boolean.toString(policy.mAdminBroadcastPending));
            out.endTag(null, TAG_ADMIN_BROADCAST_PENDING);
        }
        if (policy.mInitBundle != null) {
            out.startTag(null, TAG_INITIALIZATION_BUNDLE);
            policy.mInitBundle.saveToXml(out);
            out.endTag(null, TAG_INITIALIZATION_BUNDLE);
        }
        out.endTag(null, "policies");
        out.endDocument();
        stream.flush();
        FileUtils.sync(stream);
        stream.close();
        journal.commit();
        sendChangedNotification(userHandle);
    } catch (XmlPullParserException | IOException e) {
        Slog.w(LOG_TAG, "failed writing file", e);
        try {
            if (stream != null) {
                stream.close();
            }
        } catch (IOException ex) {
        // Ignore
        }
        journal.rollback();
    }
}
Also used : FastXmlSerializer(com.android.internal.util.FastXmlSerializer) JournaledFile(com.android.internal.util.JournaledFile) FileOutputStream(java.io.FileOutputStream) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) ParcelableString(com.android.internal.util.ParcelableString) IOException(java.io.IOException) XmlSerializer(org.xmlpull.v1.XmlSerializer) FastXmlSerializer(com.android.internal.util.FastXmlSerializer)

Example 13 with JournaledFile

use of com.android.internal.util.JournaledFile in project platform_frameworks_base by android.

the class WallpaperManagerService method loadSettingsLocked.

private void loadSettingsLocked(int userId, boolean keepDimensionHints) {
    if (DEBUG)
        Slog.v(TAG, "loadSettingsLocked");
    JournaledFile journal = makeJournaledFile(userId);
    FileInputStream stream = null;
    File file = journal.chooseForRead();
    if (!file.exists()) {
        // This should only happen one time, when upgrading from a legacy system
        migrateFromOld();
    }
    WallpaperData wallpaper = mWallpaperMap.get(userId);
    if (wallpaper == null) {
        wallpaper = new WallpaperData(userId, WALLPAPER, WALLPAPER_CROP);
        wallpaper.allowBackup = true;
        mWallpaperMap.put(userId, wallpaper);
        if (!wallpaper.cropExists()) {
            generateCrop(wallpaper);
        }
    }
    boolean success = false;
    try {
        stream = new FileInputStream(file);
        XmlPullParser parser = Xml.newPullParser();
        parser.setInput(stream, StandardCharsets.UTF_8.name());
        int type;
        do {
            type = parser.next();
            if (type == XmlPullParser.START_TAG) {
                String tag = parser.getName();
                if ("wp".equals(tag)) {
                    // Common to system + lock wallpapers
                    parseWallpaperAttributes(parser, wallpaper, keepDimensionHints);
                    // A system wallpaper might also be a live wallpaper
                    String comp = parser.getAttributeValue(null, "component");
                    wallpaper.nextWallpaperComponent = comp != null ? ComponentName.unflattenFromString(comp) : null;
                    if (wallpaper.nextWallpaperComponent == null || "android".equals(wallpaper.nextWallpaperComponent.getPackageName())) {
                        wallpaper.nextWallpaperComponent = mImageWallpaper;
                    }
                    if (DEBUG) {
                        Slog.v(TAG, "mWidth:" + wallpaper.width);
                        Slog.v(TAG, "mHeight:" + wallpaper.height);
                        Slog.v(TAG, "cropRect:" + wallpaper.cropHint);
                        Slog.v(TAG, "mName:" + wallpaper.name);
                        Slog.v(TAG, "mNextWallpaperComponent:" + wallpaper.nextWallpaperComponent);
                    }
                } else if ("kwp".equals(tag)) {
                    // keyguard-specific wallpaper for this user
                    WallpaperData lockWallpaper = mLockWallpaperMap.get(userId);
                    if (lockWallpaper == null) {
                        lockWallpaper = new WallpaperData(userId, WALLPAPER_LOCK_ORIG, WALLPAPER_LOCK_CROP);
                        mLockWallpaperMap.put(userId, lockWallpaper);
                    }
                    parseWallpaperAttributes(parser, lockWallpaper, false);
                }
            }
        } while (type != XmlPullParser.END_DOCUMENT);
        success = true;
    } catch (FileNotFoundException e) {
        Slog.w(TAG, "no current wallpaper -- first boot?");
    } catch (NullPointerException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    } catch (NumberFormatException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    } catch (XmlPullParserException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    } catch (IOException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    } catch (IndexOutOfBoundsException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    }
    IoUtils.closeQuietly(stream);
    if (!success) {
        wallpaper.width = -1;
        wallpaper.height = -1;
        wallpaper.cropHint.set(0, 0, 0, 0);
        wallpaper.padding.set(0, 0, 0, 0);
        wallpaper.name = "";
        mLockWallpaperMap.remove(userId);
    } else {
        if (wallpaper.wallpaperId <= 0) {
            wallpaper.wallpaperId = makeWallpaperIdLocked();
            if (DEBUG) {
                Slog.w(TAG, "Didn't set wallpaper id in loadSettingsLocked(" + userId + "); now " + wallpaper.wallpaperId);
            }
        }
    }
    ensureSaneWallpaperData(wallpaper);
    WallpaperData lockWallpaper = mLockWallpaperMap.get(userId);
    if (lockWallpaper != null) {
        ensureSaneWallpaperData(lockWallpaper);
    }
}
Also used : JournaledFile(com.android.internal.util.JournaledFile) XmlPullParser(org.xmlpull.v1.XmlPullParser) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) Point(android.graphics.Point) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) File(java.io.File) JournaledFile(com.android.internal.util.JournaledFile)

Example 14 with JournaledFile

use of com.android.internal.util.JournaledFile in project android_frameworks_base by ParanoidAndroid.

the class DevicePolicyManagerService method saveSettingsLocked.

private void saveSettingsLocked(int userHandle) {
    DevicePolicyData policy = getUserData(userHandle);
    JournaledFile journal = makeJournaledFile(userHandle);
    FileOutputStream stream = null;
    try {
        stream = new FileOutputStream(journal.chooseForWrite(), false);
        XmlSerializer out = new FastXmlSerializer();
        out.setOutput(stream, "utf-8");
        out.startDocument(null, true);
        out.startTag(null, "policies");
        final int N = policy.mAdminList.size();
        for (int i = 0; i < N; i++) {
            ActiveAdmin ap = policy.mAdminList.get(i);
            if (ap != null) {
                out.startTag(null, "admin");
                out.attribute(null, "name", ap.info.getComponent().flattenToString());
                ap.writeToXml(out);
                out.endTag(null, "admin");
            }
        }
        if (policy.mPasswordOwner >= 0) {
            out.startTag(null, "password-owner");
            out.attribute(null, "value", Integer.toString(policy.mPasswordOwner));
            out.endTag(null, "password-owner");
        }
        if (policy.mFailedPasswordAttempts != 0) {
            out.startTag(null, "failed-password-attempts");
            out.attribute(null, "value", Integer.toString(policy.mFailedPasswordAttempts));
            out.endTag(null, "failed-password-attempts");
        }
        if (policy.mActivePasswordQuality != 0 || policy.mActivePasswordLength != 0 || policy.mActivePasswordUpperCase != 0 || policy.mActivePasswordLowerCase != 0 || policy.mActivePasswordLetters != 0 || policy.mActivePasswordNumeric != 0 || policy.mActivePasswordSymbols != 0 || policy.mActivePasswordNonLetter != 0) {
            out.startTag(null, "active-password");
            out.attribute(null, "quality", Integer.toString(policy.mActivePasswordQuality));
            out.attribute(null, "length", Integer.toString(policy.mActivePasswordLength));
            out.attribute(null, "uppercase", Integer.toString(policy.mActivePasswordUpperCase));
            out.attribute(null, "lowercase", Integer.toString(policy.mActivePasswordLowerCase));
            out.attribute(null, "letters", Integer.toString(policy.mActivePasswordLetters));
            out.attribute(null, "numeric", Integer.toString(policy.mActivePasswordNumeric));
            out.attribute(null, "symbols", Integer.toString(policy.mActivePasswordSymbols));
            out.attribute(null, "nonletter", Integer.toString(policy.mActivePasswordNonLetter));
            out.endTag(null, "active-password");
        }
        out.endTag(null, "policies");
        out.endDocument();
        stream.close();
        journal.commit();
        sendChangedNotification(userHandle);
    } catch (IOException e) {
        try {
            if (stream != null) {
                stream.close();
            }
        } catch (IOException ex) {
        // Ignore
        }
        journal.rollback();
    }
}
Also used : FastXmlSerializer(com.android.internal.util.FastXmlSerializer) JournaledFile(com.android.internal.util.JournaledFile) FileOutputStream(java.io.FileOutputStream) IOException(java.io.IOException) XmlSerializer(org.xmlpull.v1.XmlSerializer) FastXmlSerializer(com.android.internal.util.FastXmlSerializer)

Example 15 with JournaledFile

use of com.android.internal.util.JournaledFile in project android_frameworks_base by ParanoidAndroid.

the class DevicePolicyManagerService method loadSettingsLocked.

private void loadSettingsLocked(DevicePolicyData policy, int userHandle) {
    JournaledFile journal = makeJournaledFile(userHandle);
    FileInputStream stream = null;
    File file = journal.chooseForRead();
    try {
        stream = new FileInputStream(file);
        XmlPullParser parser = Xml.newPullParser();
        parser.setInput(stream, null);
        int type;
        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT && type != XmlPullParser.START_TAG) {
        }
        String tag = parser.getName();
        if (!"policies".equals(tag)) {
            throw new XmlPullParserException("Settings do not start with policies tag: found " + tag);
        }
        type = parser.next();
        int outerDepth = parser.getDepth();
        while ((type = parser.next()) != XmlPullParser.END_DOCUMENT && (type != XmlPullParser.END_TAG || parser.getDepth() > outerDepth)) {
            if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
                continue;
            }
            tag = parser.getName();
            if ("admin".equals(tag)) {
                String name = parser.getAttributeValue(null, "name");
                try {
                    DeviceAdminInfo dai = findAdmin(ComponentName.unflattenFromString(name), userHandle);
                    if (DBG && (UserHandle.getUserId(dai.getActivityInfo().applicationInfo.uid) != userHandle)) {
                        Slog.w(TAG, "findAdmin returned an incorrect uid " + dai.getActivityInfo().applicationInfo.uid + " for user " + userHandle);
                    }
                    if (dai != null) {
                        ActiveAdmin ap = new ActiveAdmin(dai);
                        ap.readFromXml(parser);
                        policy.mAdminMap.put(ap.info.getComponent(), ap);
                        policy.mAdminList.add(ap);
                    }
                } catch (RuntimeException e) {
                    Slog.w(TAG, "Failed loading admin " + name, e);
                }
            } else if ("failed-password-attempts".equals(tag)) {
                policy.mFailedPasswordAttempts = Integer.parseInt(parser.getAttributeValue(null, "value"));
                XmlUtils.skipCurrentTag(parser);
            } else if ("password-owner".equals(tag)) {
                policy.mPasswordOwner = Integer.parseInt(parser.getAttributeValue(null, "value"));
                XmlUtils.skipCurrentTag(parser);
            } else if ("active-password".equals(tag)) {
                policy.mActivePasswordQuality = Integer.parseInt(parser.getAttributeValue(null, "quality"));
                policy.mActivePasswordLength = Integer.parseInt(parser.getAttributeValue(null, "length"));
                policy.mActivePasswordUpperCase = Integer.parseInt(parser.getAttributeValue(null, "uppercase"));
                policy.mActivePasswordLowerCase = Integer.parseInt(parser.getAttributeValue(null, "lowercase"));
                policy.mActivePasswordLetters = Integer.parseInt(parser.getAttributeValue(null, "letters"));
                policy.mActivePasswordNumeric = Integer.parseInt(parser.getAttributeValue(null, "numeric"));
                policy.mActivePasswordSymbols = Integer.parseInt(parser.getAttributeValue(null, "symbols"));
                policy.mActivePasswordNonLetter = Integer.parseInt(parser.getAttributeValue(null, "nonletter"));
                XmlUtils.skipCurrentTag(parser);
            } else {
                Slog.w(TAG, "Unknown tag: " + tag);
                XmlUtils.skipCurrentTag(parser);
            }
        }
    } catch (NullPointerException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    } catch (NumberFormatException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    } catch (XmlPullParserException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    } catch (FileNotFoundException e) {
    // Don't be noisy, this is normal if we haven't defined any policies.
    } catch (IOException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    } catch (IndexOutOfBoundsException e) {
        Slog.w(TAG, "failed parsing " + file + " " + e);
    }
    try {
        if (stream != null) {
            stream.close();
        }
    } catch (IOException e) {
    // Ignore
    }
    // Validate that what we stored for the password quality matches
    // sufficiently what is currently set.  Note that this is only
    // a sanity check in case the two get out of sync; this should
    // never normally happen.
    LockPatternUtils utils = new LockPatternUtils(mContext);
    if (utils.getActivePasswordQuality() < policy.mActivePasswordQuality) {
        Slog.w(TAG, "Active password quality 0x" + Integer.toHexString(policy.mActivePasswordQuality) + " does not match actual quality 0x" + Integer.toHexString(utils.getActivePasswordQuality()));
        policy.mActivePasswordQuality = DevicePolicyManager.PASSWORD_QUALITY_UNSPECIFIED;
        policy.mActivePasswordLength = 0;
        policy.mActivePasswordUpperCase = 0;
        policy.mActivePasswordLowerCase = 0;
        policy.mActivePasswordLetters = 0;
        policy.mActivePasswordNumeric = 0;
        policy.mActivePasswordSymbols = 0;
        policy.mActivePasswordNonLetter = 0;
    }
    validatePasswordOwnerLocked(policy);
    syncDeviceCapabilitiesLocked(policy);
    updateMaximumTimeToLockLocked(policy);
}
Also used : JournaledFile(com.android.internal.util.JournaledFile) XmlPullParser(org.xmlpull.v1.XmlPullParser) FileNotFoundException(java.io.FileNotFoundException) LockPatternUtils(com.android.internal.widget.LockPatternUtils) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream) DeviceAdminInfo(android.app.admin.DeviceAdminInfo) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) AtomicFile(android.util.AtomicFile) File(java.io.File) JournaledFile(com.android.internal.util.JournaledFile)

Aggregations

JournaledFile (com.android.internal.util.JournaledFile)23 IOException (java.io.IOException)23 XmlPullParserException (org.xmlpull.v1.XmlPullParserException)17 File (java.io.File)14 FileOutputStream (java.io.FileOutputStream)14 FileNotFoundException (java.io.FileNotFoundException)13 FastXmlSerializer (com.android.internal.util.FastXmlSerializer)10 XmlSerializer (org.xmlpull.v1.XmlSerializer)10 FileInputStream (java.io.FileInputStream)9 XmlPullParser (org.xmlpull.v1.XmlPullParser)9 ParcelableString (com.android.internal.util.ParcelableString)6 ApplicationInfo (android.content.pm.ApplicationInfo)5 AtomicFile (android.util.AtomicFile)5 BufferedOutputStream (java.io.BufferedOutputStream)5 DeviceAdminInfo (android.app.admin.DeviceAdminInfo)4 UserInfo (android.content.pm.UserInfo)4 Point (android.graphics.Point)4 BufferedWriter (java.io.BufferedWriter)4 OutputStreamWriter (java.io.OutputStreamWriter)4 InstallerException (com.android.internal.os.InstallerConnection.InstallerException)3