From e66c1778f80f4b18e29e018eca3a338f125f23b9 Mon Sep 17 00:00:00 2001 From: Jeff Sharkey Date: Fri, 20 Sep 2013 14:30:59 -0700 Subject: Require that persistable Uri permissions be taken. Change our Intent flag to indicate that a Uri permission grant is persistable, but don't actually persist it until explicitly taken by the receiving app. This prevents apps from spamming each other if persisted permissions aren't really required. Remember the last time a persisted grant was taken by an app, and use this to prune away the oldest grants when the number of grants grows too large. Allow apps to query persisted grants they are holding, and allow them to release previously persisted grants. Add public UriPermission class to return grant details and timestamp. Track various permission strengths separately, and combine together after each mutation pass. Persistable grants are currently treated like global grants, but they could be moved to have owners in the future. Require that grant holders trying to extend a persistable permission actually hold a persistable permission themselves. Bug: 10835779 Change-Id: I95b2f797c04ce7fd2612f9a644685dbd44e03759 --- core/java/com/android/internal/util/XmlUtils.java | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'core/java/com') diff --git a/core/java/com/android/internal/util/XmlUtils.java b/core/java/com/android/internal/util/XmlUtils.java index f40f48c..0b74cf3 100644 --- a/core/java/com/android/internal/util/XmlUtils.java +++ b/core/java/com/android/internal/util/XmlUtils.java @@ -931,6 +931,15 @@ public class XmlUtils { out.attribute(null, name, Integer.toString(value)); } + public static long readLongAttribute(XmlPullParser in, String name, long defaultValue) { + final String value = in.getAttributeValue(null, name); + try { + return Long.parseLong(value); + } catch (NumberFormatException e) { + return defaultValue; + } + } + public static long readLongAttribute(XmlPullParser in, String name) throws IOException { final String value = in.getAttributeValue(null, name); try { -- cgit v1.1