Using @string For Android:authorities In A Contentprovider
Solution 2:
Many manifest attributes cannot be specified as a reference to a string -- they must be specified as explicit string values.
The code that parses the manifest is in: frameworks/base/core/java/android/content/pm/PackageParser.java. That class calls, among others, getNonConfigurationString() and getNonResourceString() (which are implemented in: frameworks/base/core/java/android/content/res/TypedArray.java).
getNonConfigurationString() describes itself as:
Retrieve the string value of an attribute that isnot allowed to change with the given configurations.
getNonResourceString() describes itself as:
Retrieve the stringvaluefor an attribute, but only if that string comes from an immediate valuein an XML file. That is, this does not allow references to string resources, string attributes, or conversions from other types. As such, this method will only return strings that come from attributes in an XML file.
The manifest attributes that PackageParser doesn't allow to be taken from resources or from different configurations are listed below.
These attributes are defined in com.android.internal.R.styleable The manifest.xml element attribute name is usually the part of the name after the last '_' in the formal name. For example, the android:authorities attribute in a element in manifest.xml is AndroidManifestProvider_authorities, or com.android.internal.R.styleable.AndroidManifestProvider_authorities. (The number in the lists of attribute names below are the line number of the relevant code in version 4.1.1 of PackageParser.java)
Attributes read by getNonConfigurationString:
917: AndroidManifest_versionName922: AndroidManifest_sharedUserId 2057: AndroidManifestActivity_parentActivityName2071: AndroidManifestActivity_permission2079: AndroidManifestActivity_taskAffinity2247: AndroidManifestActivityAlias_targetActivity2330: AndroidManifestActivityAlias_permission2336: AndroidManifestActivityAlias_parentActivityName1672: AndroidManifestApplication_name1683: AndroidManifestApplication_manageSpaceActivity 1697: AndroidManifestApplication_backupAgent 1795: AndroidManifestApplication_permission 1800: AndroidManifestApplication_taskAffinity1815: AndroidManifestApplication_process3005: AndroidManifestData_mimeType3017: AndroidManifestData_scheme3023: AndroidManifestData_host3025: AndroidManifestData_port3031: AndroidManifestData_path3037: AndroidManifestData_pathPrefix3043: AndroidManifestData_pathPattern2527: AndroidManifestGrantUriPermission_path2533: AndroidManifestGrantUriPermission_pathPrefix2539: AndroidManifestGrantUriPermission_pathPattern2579: AndroidManifestPathPermission_permission2581: AndroidManifestPathPermission_readPermission2586: AndroidManifestPathPermission_writePermission2615: AndroidManifestPathPermission_path2622: AndroidManifestPathPermission_pathPrefix2629: AndroidManifestPathPermission_pathPattern2434: AndroidManifestProvider_authorities2441: AndroidManifestProvider_permission2443: AndroidManifestProvider_readPermission2454: AndroidManifestProvider_writePermission2713: AndroidManifestService_permission2832: AndroidManifestMetaData_name1225: AndroidManifestOriginalPackage_name1981: (parsePackageItemInfo -- I can't tell list of all names)3258: (Component constructor args.nameres -- I can't tell list of all names)
Attributes read by getNonResourceString:
1806: AndroidManifestApplication_taskAffinity1821: AndroidManifestApplication_process1632: AndroidManifestInstrumentation_targetPackage2891: AndroidManifestPackageVerifier_name2894: AndroidManifestPackageVerifier_publicKey1512: AndroidManifestPermission_permissionGroup1200: AndroidManifestProtectedBroadcast_name1927: AndroidManifestUsesLibrary_name1054: AndroidManifestUsesFeature_name1004: AndroidManifestUsesPermission_name3308: (Component constructor args.processRes -- I can't tell list of all names)
So, alot of attributes in the manifest.xml file must be specified as explicit string values (ie in quotes) rather than references to strings in strings.xml.
Post a Comment for "Using @string For Android:authorities In A Contentprovider"