Search in sources :

Example 1 with END_DOCUMENT

use of org.xmlpull.v1.XmlPullParser.END_DOCUMENT in project platform_frameworks_base by android.

the class ActivityManagerService method readGrantedUriPermissionsLocked.

private void readGrantedUriPermissionsLocked() {
    if (DEBUG_URI_PERMISSION)
        Slog.v(TAG_URI_PERMISSION, "readGrantedUriPermissions()");
    final long now = System.currentTimeMillis();
    FileInputStream fis = null;
    try {
        fis = mGrantFile.openRead();
        final XmlPullParser in = Xml.newPullParser();
        in.setInput(fis, StandardCharsets.UTF_8.name());
        int type;
        while ((type = in.next()) != END_DOCUMENT) {
            final String tag = in.getName();
            if (type == START_TAG) {
                if (TAG_URI_GRANT.equals(tag)) {
                    final int sourceUserId;
                    final int targetUserId;
                    final int userHandle = readIntAttribute(in, ATTR_USER_HANDLE, UserHandle.USER_NULL);
                    if (userHandle != UserHandle.USER_NULL) {
                        // For backwards compatibility.
                        sourceUserId = userHandle;
                        targetUserId = userHandle;
                    } else {
                        sourceUserId = readIntAttribute(in, ATTR_SOURCE_USER_ID);
                        targetUserId = readIntAttribute(in, ATTR_TARGET_USER_ID);
                    }
                    final String sourcePkg = in.getAttributeValue(null, ATTR_SOURCE_PKG);
                    final String targetPkg = in.getAttributeValue(null, ATTR_TARGET_PKG);
                    final Uri uri = Uri.parse(in.getAttributeValue(null, ATTR_URI));
                    final boolean prefix = readBooleanAttribute(in, ATTR_PREFIX);
                    final int modeFlags = readIntAttribute(in, ATTR_MODE_FLAGS);
                    final long createdTime = readLongAttribute(in, ATTR_CREATED_TIME, now);
                    // Sanity check that provider still belongs to source package
                    // Both direct boot aware and unaware packages are fine as we
                    // will do filtering at query time to avoid multiple parsing.
                    final ProviderInfo pi = getProviderInfoLocked(uri.getAuthority(), sourceUserId, MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE);
                    if (pi != null && sourcePkg.equals(pi.packageName)) {
                        int targetUid = -1;
                        try {
                            targetUid = AppGlobals.getPackageManager().getPackageUid(targetPkg, MATCH_UNINSTALLED_PACKAGES, targetUserId);
                        } catch (RemoteException e) {
                        }
                        if (targetUid != -1) {
                            final UriPermission perm = findOrCreateUriPermissionLocked(sourcePkg, targetPkg, targetUid, new GrantUri(sourceUserId, uri, prefix));
                            perm.initPersistedModes(modeFlags, createdTime);
                        }
                    } else {
                        Slog.w(TAG, "Persisted grant for " + uri + " had source " + sourcePkg + " but instead found " + pi);
                    }
                }
            }
        }
    } catch (FileNotFoundException e) {
    // Missing grants is okay
    } catch (IOException e) {
        Slog.wtf(TAG, "Failed reading Uri grants", e);
    } catch (XmlPullParserException e) {
        Slog.wtf(TAG, "Failed reading Uri grants", e);
    } finally {
        IoUtils.closeQuietly(fis);
    }
}
Also used : XmlPullParser(org.xmlpull.v1.XmlPullParser) FileNotFoundException(java.io.FileNotFoundException) IOException(java.io.IOException) Uri(android.net.Uri) FileInputStream(java.io.FileInputStream) Point(android.graphics.Point) ProviderInfo(android.content.pm.ProviderInfo) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) RemoteException(android.os.RemoteException)

Example 2 with END_DOCUMENT

use of org.xmlpull.v1.XmlPullParser.END_DOCUMENT in project platform_frameworks_base by android.

the class NotificationManagerService method readPolicyXml.

private void readPolicyXml(InputStream stream, boolean forRestore) throws XmlPullParserException, NumberFormatException, IOException {
    final XmlPullParser parser = Xml.newPullParser();
    parser.setInput(stream, StandardCharsets.UTF_8.name());
    while (parser.next() != END_DOCUMENT) {
        mZenModeHelper.readXml(parser, forRestore);
        mRankingHelper.readXml(parser, forRestore);
    }
}
Also used : XmlPullParser(org.xmlpull.v1.XmlPullParser)

Example 3 with END_DOCUMENT

use of org.xmlpull.v1.XmlPullParser.END_DOCUMENT in project AndroidSDK-RecipeBook by gabu.

the class Recipe078 method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    // 名古屋の明日の天気情報を取得できるURLです。
    String uri = "http://weather.livedoor.com/forecast/" + "webservice/rest/v1?city=38&day=tomorrow";
    // HTTPクライアントを作って
    HttpClient client = new DefaultHttpClient();
    // GETオブジェクトを作って
    HttpGet get = new HttpGet();
    try {
        // URIをセット
        get.setURI(new URI(uri));
        // GETリクエストを実行してレスポンスを取得
        HttpResponse res = client.execute(get);
        // レスポンスからInputStreamを取得
        InputStream in = res.getEntity().getContent();
        // XMLプルパーサを生成して
        XmlPullParser parser = Xml.newPullParser();
        // InputStreamをセット
        parser.setInput(in, "UTF-8");
        int eventType = parser.getEventType();
        // イベントタイプがEND_DOCUMENTになるまでループ
        // けど、以下の必要な値が全て取得できたらbreakする。
        String title = "";
        String telop = "";
        String description = "";
        while (eventType != XmlPullParser.END_DOCUMENT) {
            switch(eventType) {
                case XmlPullParser.START_TAG:
                    String tag = parser.getName();
                    if ("title".equals(tag)) {
                        // タイトルを取得
                        title = parser.nextText();
                    } else if ("telop".equals(tag)) {
                        // 天気を取得
                        telop = parser.nextText();
                    } else if ("description".equals(tag)) {
                        // 天気概況文を取得
                        description = parser.nextText();
                    }
                    break;
            }
            if (!("".equals(title) || "".equals(telop) || "".equals(description))) {
                // 必要な値が取得できたらループを抜ける
                break;
            }
            // パーサを次のイベントまで進める
            eventType = parser.next();
        }
        // TextViewに表示!
        TextView v = (TextView) findViewById(R.id.text);
        v.setText(title + "\n\n" + telop + "\n\n" + description);
    } catch (URISyntaxException e) {
        e.printStackTrace();
    } catch (ClientProtocolException e) {
        e.printStackTrace();
    } catch (IOException e) {
        e.printStackTrace();
    } catch (XmlPullParserException e) {
        e.printStackTrace();
    }
}
Also used : InputStream(java.io.InputStream) HttpGet(org.apache.http.client.methods.HttpGet) XmlPullParser(org.xmlpull.v1.XmlPullParser) HttpResponse(org.apache.http.HttpResponse) URISyntaxException(java.net.URISyntaxException) IOException(java.io.IOException) URI(java.net.URI) DefaultHttpClient(org.apache.http.impl.client.DefaultHttpClient) ClientProtocolException(org.apache.http.client.ClientProtocolException) DefaultHttpClient(org.apache.http.impl.client.DefaultHttpClient) HttpClient(org.apache.http.client.HttpClient) TextView(android.widget.TextView) XmlPullParserException(org.xmlpull.v1.XmlPullParserException)

Example 4 with END_DOCUMENT

use of org.xmlpull.v1.XmlPullParser.END_DOCUMENT in project android_frameworks_base by DirtyUnicorns.

the class NotificationManagerService method readPolicyXml.

private void readPolicyXml(InputStream stream, boolean forRestore) throws XmlPullParserException, NumberFormatException, IOException {
    final XmlPullParser parser = Xml.newPullParser();
    parser.setInput(stream, StandardCharsets.UTF_8.name());
    while (parser.next() != END_DOCUMENT) {
        mZenModeHelper.readXml(parser, forRestore);
        mRankingHelper.readXml(parser, forRestore);
    }
}
Also used : XmlPullParser(org.xmlpull.v1.XmlPullParser)

Example 5 with END_DOCUMENT

use of org.xmlpull.v1.XmlPullParser.END_DOCUMENT in project android_frameworks_base by DirtyUnicorns.

the class NetworkPolicyManagerService method readPolicyAL.

private void readPolicyAL() {
    if (LOGV)
        Slog.v(TAG, "readPolicyAL()");
    // clear any existing policy and read from disk
    mNetworkPolicy.clear();
    mUidPolicy.clear();
    FileInputStream fis = null;
    try {
        fis = mPolicyFile.openRead();
        final XmlPullParser in = Xml.newPullParser();
        in.setInput(fis, StandardCharsets.UTF_8.name());
        int type;
        int version = VERSION_INIT;
        boolean insideWhitelist = false;
        while ((type = in.next()) != END_DOCUMENT) {
            final String tag = in.getName();
            if (type == START_TAG) {
                if (TAG_POLICY_LIST.equals(tag)) {
                    final boolean oldValue = mRestrictBackground;
                    version = readIntAttribute(in, ATTR_VERSION);
                    if (version >= VERSION_ADDED_RESTRICT_BACKGROUND) {
                        mRestrictBackground = readBooleanAttribute(in, ATTR_RESTRICT_BACKGROUND);
                    } else {
                        mRestrictBackground = false;
                    }
                    if (mRestrictBackground != oldValue) {
                        // Some early services may have read the default value,
                        // so notify them that it's changed
                        mHandler.obtainMessage(MSG_RESTRICT_BACKGROUND_CHANGED, mRestrictBackground ? 1 : 0, 0).sendToTarget();
                    }
                } else if (TAG_NETWORK_POLICY.equals(tag)) {
                    final int networkTemplate = readIntAttribute(in, ATTR_NETWORK_TEMPLATE);
                    final String subscriberId = in.getAttributeValue(null, ATTR_SUBSCRIBER_ID);
                    final String networkId;
                    if (version >= VERSION_ADDED_NETWORK_ID) {
                        networkId = in.getAttributeValue(null, ATTR_NETWORK_ID);
                    } else {
                        networkId = null;
                    }
                    final int cycleDay = readIntAttribute(in, ATTR_CYCLE_DAY);
                    final String cycleTimezone;
                    if (version >= VERSION_ADDED_TIMEZONE) {
                        cycleTimezone = in.getAttributeValue(null, ATTR_CYCLE_TIMEZONE);
                    } else {
                        cycleTimezone = Time.TIMEZONE_UTC;
                    }
                    final long warningBytes = readLongAttribute(in, ATTR_WARNING_BYTES);
                    final long limitBytes = readLongAttribute(in, ATTR_LIMIT_BYTES);
                    final long lastLimitSnooze;
                    if (version >= VERSION_SPLIT_SNOOZE) {
                        lastLimitSnooze = readLongAttribute(in, ATTR_LAST_LIMIT_SNOOZE);
                    } else if (version >= VERSION_ADDED_SNOOZE) {
                        lastLimitSnooze = readLongAttribute(in, ATTR_LAST_SNOOZE);
                    } else {
                        lastLimitSnooze = SNOOZE_NEVER;
                    }
                    final boolean metered;
                    if (version >= VERSION_ADDED_METERED) {
                        metered = readBooleanAttribute(in, ATTR_METERED);
                    } else {
                        switch(networkTemplate) {
                            case MATCH_MOBILE_3G_LOWER:
                            case MATCH_MOBILE_4G:
                            case MATCH_MOBILE_ALL:
                                metered = true;
                                break;
                            default:
                                metered = false;
                        }
                    }
                    final long lastWarningSnooze;
                    if (version >= VERSION_SPLIT_SNOOZE) {
                        lastWarningSnooze = readLongAttribute(in, ATTR_LAST_WARNING_SNOOZE);
                    } else {
                        lastWarningSnooze = SNOOZE_NEVER;
                    }
                    final boolean inferred;
                    if (version >= VERSION_ADDED_INFERRED) {
                        inferred = readBooleanAttribute(in, ATTR_INFERRED);
                    } else {
                        inferred = false;
                    }
                    final NetworkTemplate template = new NetworkTemplate(networkTemplate, subscriberId, networkId);
                    if (template.isPersistable()) {
                        mNetworkPolicy.put(template, new NetworkPolicy(template, cycleDay, cycleTimezone, warningBytes, limitBytes, lastWarningSnooze, lastLimitSnooze, metered, inferred));
                    }
                } else if (TAG_UID_POLICY.equals(tag)) {
                    final int uid = readIntAttribute(in, ATTR_UID);
                    final int policy = readIntAttribute(in, ATTR_POLICY);
                    if (UserHandle.isApp(uid)) {
                        setUidPolicyUncheckedUL(uid, policy, false);
                    } else {
                        Slog.w(TAG, "unable to apply policy to UID " + uid + "; ignoring");
                    }
                } else if (TAG_APP_POLICY.equals(tag)) {
                    final int appId = readIntAttribute(in, ATTR_APP_ID);
                    final int policy = readIntAttribute(in, ATTR_POLICY);
                    // TODO: set for other users during upgrade
                    // app policy is deprecated so this is only used in pre system user split.
                    final int uid = UserHandle.getUid(UserHandle.USER_SYSTEM, appId);
                    if (UserHandle.isApp(uid)) {
                        setUidPolicyUncheckedUL(uid, policy, false);
                    } else {
                        Slog.w(TAG, "unable to apply policy to UID " + uid + "; ignoring");
                    }
                } else if (TAG_WHITELIST.equals(tag)) {
                    insideWhitelist = true;
                } else if (TAG_RESTRICT_BACKGROUND.equals(tag) && insideWhitelist) {
                    final int uid = readIntAttribute(in, ATTR_UID);
                    mRestrictBackgroundWhitelistUids.put(uid, true);
                } else if (TAG_REVOKED_RESTRICT_BACKGROUND.equals(tag) && insideWhitelist) {
                    final int uid = readIntAttribute(in, ATTR_UID);
                    mRestrictBackgroundWhitelistRevokedUids.put(uid, true);
                }
            } else if (type == END_TAG) {
                if (TAG_WHITELIST.equals(tag)) {
                    insideWhitelist = false;
                }
            }
        }
    } catch (FileNotFoundException e) {
        // missing policy is okay, probably first boot
        upgradeLegacyBackgroundDataUL();
    } catch (IOException e) {
        Log.wtf(TAG, "problem reading network policy", e);
    } catch (XmlPullParserException e) {
        Log.wtf(TAG, "problem reading network policy", e);
    } finally {
        IoUtils.closeQuietly(fis);
    }
}
Also used : NetworkTemplate(android.net.NetworkTemplate) NetworkPolicy(android.net.NetworkPolicy) XmlPullParser(org.xmlpull.v1.XmlPullParser) FileNotFoundException(java.io.FileNotFoundException) XmlPullParserException(org.xmlpull.v1.XmlPullParserException) NetworkPolicyManager.uidRulesToString(android.net.NetworkPolicyManager.uidRulesToString) IOException(java.io.IOException) FileInputStream(java.io.FileInputStream)

Aggregations

XmlPullParser (org.xmlpull.v1.XmlPullParser)26 IOException (java.io.IOException)21 XmlPullParserException (org.xmlpull.v1.XmlPullParserException)21 FileInputStream (java.io.FileInputStream)19 FileNotFoundException (java.io.FileNotFoundException)19 NetworkPolicy (android.net.NetworkPolicy)6 NetworkTemplate (android.net.NetworkTemplate)6 IPackageInstallerSession (android.content.pm.IPackageInstallerSession)5 NetworkPolicyManager.uidRulesToString (android.net.NetworkPolicyManager.uidRulesToString)5 VolumeRecord (android.os.storage.VolumeRecord)5 RemoteException (android.os.RemoteException)3 ProviderInfo (android.content.pm.ProviderInfo)2 Point (android.graphics.Point)2 Uri (android.net.Uri)2 NameNotFoundException (android.content.pm.PackageManager.NameNotFoundException)1 TextView (android.widget.TextView)1 InputStream (java.io.InputStream)1 StringReader (java.io.StringReader)1 URI (java.net.URI)1 URISyntaxException (java.net.URISyntaxException)1