You've already forked android_translation_layer
mirror of
https://gitlab.com/android_translation_layer/android_translation_layer.git
synced 2025-10-27 11:48:10 -07:00
api-impl/android/content: implement metadata bundle in PackageInfo
This commit is contained in:
@@ -17,6 +17,8 @@
|
|||||||
package android.content.pm;
|
package android.content.pm;
|
||||||
|
|
||||||
import com.reandroid.arsc.chunk.xml.AndroidManifestBlock;
|
import com.reandroid.arsc.chunk.xml.AndroidManifestBlock;
|
||||||
|
import com.reandroid.arsc.chunk.xml.ResXmlAttribute;
|
||||||
|
import com.reandroid.arsc.chunk.xml.ResXmlElement;
|
||||||
import java.io.InputStream;
|
import java.io.InputStream;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
|
||||||
@@ -249,6 +251,23 @@ public class PackageInfo {
|
|||||||
packageName = manifest.getPackageName();
|
packageName = manifest.getPackageName();
|
||||||
versionCode = manifest.getVersionCode();
|
versionCode = manifest.getVersionCode();
|
||||||
versionName = manifest.getVersionName();
|
versionName = manifest.getVersionName();
|
||||||
|
|
||||||
|
System.out.println("PackageInfo()");
|
||||||
|
|
||||||
|
applicationInfo = new ApplicationInfo();
|
||||||
|
|
||||||
|
ResXmlElement application = manifest.getApplicationElement();
|
||||||
|
for (ResXmlElement metaData : application.listElements(AndroidManifestBlock.TAG_meta_data)) {
|
||||||
|
ResXmlAttribute name = metaData.searchAttributeByResourceId(AndroidManifestBlock.ID_name);
|
||||||
|
ResXmlAttribute value = metaData.searchAttributeByResourceId(AndroidManifestBlock.ID_value);
|
||||||
|
if (name == null || value == null) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
System.out.println("PackageInfo(): applicationInfo.metaData.putString("+name.getValueAsString()+", "+value.getValueAsString()+")");
|
||||||
|
applicationInfo.metaData.putString(name.getValueAsString(), value.getValueAsString());
|
||||||
|
}
|
||||||
|
|
||||||
System.out.println("PackageInfo(): packageName: >"+packageName+"<, versionCode: >"+versionCode+"<, versionName: >"+versionName+"<");
|
System.out.println("PackageInfo(): packageName: >"+packageName+"<, versionCode: >"+versionCode+"<, versionName: >"+versionName+"<");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1330,6 +1330,8 @@ public class PackageManager {
|
|||||||
*/
|
*/
|
||||||
public static final String ACTION_REQUEST_PERMISSION = "android.content.pm.action.REQUEST_PERMISSION";
|
public static final String ACTION_REQUEST_PERMISSION = "android.content.pm.action.REQUEST_PERMISSION";
|
||||||
|
|
||||||
|
PackageInfo package_info;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Extra field name for the list of permissions, which the user must approve.
|
* Extra field name for the list of permissions, which the user must approve.
|
||||||
*
|
*
|
||||||
@@ -1365,6 +1367,11 @@ public class PackageManager {
|
|||||||
"SaTYb9dr5sB4WLNglk7zxDtM80H518VvihTcP7FHL+Gn6g4j5fkI98+S\n" +
|
"SaTYb9dr5sB4WLNglk7zxDtM80H518VvihTcP7FHL+Gn6g4j5fkI98+S\n" +
|
||||||
"-----END CERTIFICATE-----\n").getBytes();
|
"-----END CERTIFICATE-----\n").getBytes();
|
||||||
|
|
||||||
|
|
||||||
|
public PackageManager() {
|
||||||
|
package_info = new PackageInfo();
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Retrieve overall information about an application package that is
|
* Retrieve overall information about an application package that is
|
||||||
* installed on the system.
|
* installed on the system.
|
||||||
@@ -1400,11 +1407,10 @@ public class PackageManager {
|
|||||||
* @see #GET_UNINSTALLED_PACKAGES
|
* @see #GET_UNINSTALLED_PACKAGES
|
||||||
*/
|
*/
|
||||||
public PackageInfo getPackageInfo(String packageName, int flags) throws NameNotFoundException {
|
public PackageInfo getPackageInfo(String packageName, int flags) throws NameNotFoundException {
|
||||||
PackageInfo packageInfo = new PackageInfo();
|
|
||||||
if ((flags & GET_SIGNATURES) == GET_SIGNATURES) {
|
if ((flags & GET_SIGNATURES) == GET_SIGNATURES) {
|
||||||
packageInfo.signatures = new Signature[]{new Signature(X509_DUMMY)};
|
package_info.signatures = new Signature[]{new Signature(X509_DUMMY)};
|
||||||
}
|
}
|
||||||
return packageInfo;
|
return package_info;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1586,7 +1592,7 @@ public class PackageManager {
|
|||||||
*/
|
*/
|
||||||
public ApplicationInfo getApplicationInfo(String packageName,
|
public ApplicationInfo getApplicationInfo(String packageName,
|
||||||
int flags) throws NameNotFoundException {
|
int flags) throws NameNotFoundException {
|
||||||
return new ApplicationInfo();
|
return package_info.applicationInfo;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1723,7 +1729,7 @@ public class PackageManager {
|
|||||||
*/
|
*/
|
||||||
public List<PackageInfo> getInstalledPackages(int flags) {
|
public List<PackageInfo> getInstalledPackages(int flags) {
|
||||||
List<PackageInfo> ret = new ArrayList<PackageInfo>();
|
List<PackageInfo> ret = new ArrayList<PackageInfo>();
|
||||||
ret.add(new PackageInfo());
|
ret.add(package_info);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -834,7 +834,12 @@ public final class AssetManager {
|
|||||||
for (TableBlock tableBlock : tableBlocks) {
|
for (TableBlock tableBlock : tableBlocks) {
|
||||||
for (PackageBlock packageBlock : tableBlock.listPackages()) {
|
for (PackageBlock packageBlock : tableBlock.listPackages()) {
|
||||||
if (packageBlock.getName().equals(defPackage)) {
|
if (packageBlock.getName().equals(defPackage)) {
|
||||||
return packageBlock.getEntry("", type, name).getResourceId();
|
Entry entry = packageBlock.getEntry("", type, name);
|
||||||
|
if(entry != null) {
|
||||||
|
return entry.getResourceId();
|
||||||
|
} else {
|
||||||
|
return -1; // TODO: investigate
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user