3636import android .content .pm .PermissionGroupInfo ;
3737import android .content .pm .PermissionInfo ;
3838import android .content .pm .UserInfo ;
39+ import android .content .pm .VerificationParams ;
3940import android .content .res .AssetManager ;
4041import android .content .res .Resources ;
4142import android .net .Uri ;
@@ -787,6 +788,8 @@ private void runInstall() {
787788 String macAlgo = null ;
788789 byte [] macKey = null ;
789790 byte [] tag = null ;
791+ String originatingUriString = null ;
792+ String referrer = null ;
790793
791794 while ((opt =nextOption ()) != null ) {
792795 if (opt .equals ("-l" )) {
@@ -850,6 +853,20 @@ private void runInstall() {
850853 showUsage ();
851854 return ;
852855 }
856+ } else if (opt .equals ("--originating-uri" )) {
857+ originatingUriString = nextOptionData ();
858+ if (originatingUriString == null ) {
859+ System .err .println ("Error: must supply argument for --originating-uri" );
860+ showUsage ();
861+ return ;
862+ }
863+ } else if (opt .equals ("--referrer" )) {
864+ referrer = nextOptionData ();
865+ if (referrer == null ) {
866+ System .err .println ("Error: must supply argument for --referrer" );
867+ showUsage ();
868+ return ;
869+ }
853870 } else {
854871 System .err .println ("Error: Unknown option: " + opt );
855872 showUsage ();
@@ -897,6 +914,20 @@ private void runInstall() {
897914
898915 final Uri apkURI ;
899916 final Uri verificationURI ;
917+ final Uri originatingURI ;
918+ final Uri referrerURI ;
919+
920+ if (originatingUriString != null ) {
921+ originatingURI = Uri .parse (originatingUriString );
922+ } else {
923+ originatingURI = null ;
924+ }
925+
926+ if (referrer != null ) {
927+ referrerURI = Uri .parse (referrer );
928+ } else {
929+ referrerURI = null ;
930+ }
900931
901932 // Populate apkURI, must be present
902933 final String apkFilePath = nextArg ();
@@ -920,8 +951,11 @@ private void runInstall() {
920951
921952 PackageInstallObserver obs = new PackageInstallObserver ();
922953 try {
923- mPm .installPackageWithVerification (apkURI , obs , installFlags , installerPackageName ,
924- verificationURI , null , encryptionParams );
954+ VerificationParams verificationParams = new VerificationParams (verificationURI ,
955+ originatingURI , referrerURI , null );
956+
957+ mPm .installPackageWithVerificationAndEncryption (apkURI , obs , installFlags ,
958+ installerPackageName , verificationParams , encryptionParams );
925959
926960 synchronized (obs ) {
927961 while (!obs .finished ) {
@@ -1441,7 +1475,8 @@ private static void showUsage() {
14411475 System .err .println (" pm list libraries" );
14421476 System .err .println (" pm path PACKAGE" );
14431477 System .err .println (" pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f]" );
1444- System .err .println (" [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>] PATH" );
1478+ System .err .println (" [--algo <algorithm name> --key <key-in-hex> --iv <IV-in-hex>]" );
1479+ System .err .println (" [--originating-uri <URI>] [--referrer <URI>] PATH" );
14451480 System .err .println (" pm uninstall [-k] PACKAGE" );
14461481 System .err .println (" pm clear PACKAGE" );
14471482 System .err .println (" pm enable PACKAGE_OR_COMPONENT" );
0 commit comments