Loading packages/PackageInstaller/res/values/strings.xml +1 −1 Original line number Original line Diff line number Diff line Loading @@ -272,7 +272,7 @@ <!-- The title of a dialog which asks the user to restore (i.e. re-install, re-download) an app <!-- The title of a dialog which asks the user to restore (i.e. re-install, re-download) an app after parts of the app have been previously moved into the cloud for temporary storage. after parts of the app have been previously moved into the cloud for temporary storage. "installername" is the app that will facilitate the download of the app. [CHAR LIMIT=50] --> "installername" is the app that will facilitate the download of the app. [CHAR LIMIT=50] --> <string name="unarchive_application_title">Restore <xliff:g id="appname" example="Bird Game">%1$s</xliff:g> from <xliff:g id="installername" example="App Store">%1$s</xliff:g>?</string> <string name="unarchive_application_title">Restore <xliff:g id="appname" example="Bird Game">%1$s</xliff:g> from <xliff:g id="installername" example="App Store">%2$s</xliff:g>?</string> <!-- After the user confirms the dialog, a download will start. [CHAR LIMIT=none] --> <!-- After the user confirms the dialog, a download will start. [CHAR LIMIT=none] --> <string name="unarchive_body_text">This app will begin to download in the background</string> <string name="unarchive_body_text">This app will begin to download in the background</string> <!-- The action to restore (i.e. re-install, re-download) an app after parts of the app have been previously moved <!-- The action to restore (i.e. re-install, re-download) an app after parts of the app have been previously moved Loading packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveActivity.java +21 −3 Original line number Original line Diff line number Diff line Loading @@ -25,10 +25,12 @@ import android.app.DialogFragment; import android.app.Fragment; import android.app.Fragment; import android.app.FragmentTransaction; import android.app.FragmentTransaction; import android.content.IntentSender; import android.content.IntentSender; import android.content.pm.InstallSourceInfo; import android.content.pm.PackageInstaller; import android.content.pm.PackageInstaller; import android.content.pm.PackageManager; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Bundle; import android.os.Process; import android.os.Process; import android.text.TextUtils; import android.util.Log; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.NonNull; Loading Loading @@ -97,14 +99,30 @@ public class UnarchiveActivity extends Activity { String appTitle = pm.getApplicationInfo(mPackageName, String appTitle = pm.getApplicationInfo(mPackageName, PackageManager.ApplicationInfoFlags.of( PackageManager.ApplicationInfoFlags.of( MATCH_ARCHIVED_PACKAGES)).loadLabel(pm).toString(); MATCH_ARCHIVED_PACKAGES)).loadLabel(pm).toString(); // TODO(ag/25387215) Get the real installer title here after fixing getInstallSource for String installerTitle = getResponsibleInstallerTitle(pm, // archived apps. pm.getInstallSourceInfo(mPackageName)); showDialogFragment(appTitle, "installerTitle"); showDialogFragment(appTitle, installerTitle); } catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Invalid packageName: " + e.getMessage()); Log.e(TAG, "Invalid packageName: " + e.getMessage()); } } } } private String getResponsibleInstallerTitle(PackageManager pm, InstallSourceInfo installSource) throws PackageManager.NameNotFoundException { String packageName = TextUtils.isEmpty(installSource.getUpdateOwnerPackageName()) ? installSource.getInstallingPackageName() : installSource.getUpdateOwnerPackageName(); if (packageName == null) { // Should be unreachable. Log.e(TAG, "Installer not found."); setResult(Activity.RESULT_FIRST_USER); finish(); return ""; } return pm.getApplicationInfo(packageName, /* flags= */ 0).loadLabel(pm).toString(); } @NonNull @NonNull private String[] getRequestedPermissions(String callingPackage) { private String[] getRequestedPermissions(String callingPackage) { String[] requestedPermissions = null; String[] requestedPermissions = null; Loading Loading
packages/PackageInstaller/res/values/strings.xml +1 −1 Original line number Original line Diff line number Diff line Loading @@ -272,7 +272,7 @@ <!-- The title of a dialog which asks the user to restore (i.e. re-install, re-download) an app <!-- The title of a dialog which asks the user to restore (i.e. re-install, re-download) an app after parts of the app have been previously moved into the cloud for temporary storage. after parts of the app have been previously moved into the cloud for temporary storage. "installername" is the app that will facilitate the download of the app. [CHAR LIMIT=50] --> "installername" is the app that will facilitate the download of the app. [CHAR LIMIT=50] --> <string name="unarchive_application_title">Restore <xliff:g id="appname" example="Bird Game">%1$s</xliff:g> from <xliff:g id="installername" example="App Store">%1$s</xliff:g>?</string> <string name="unarchive_application_title">Restore <xliff:g id="appname" example="Bird Game">%1$s</xliff:g> from <xliff:g id="installername" example="App Store">%2$s</xliff:g>?</string> <!-- After the user confirms the dialog, a download will start. [CHAR LIMIT=none] --> <!-- After the user confirms the dialog, a download will start. [CHAR LIMIT=none] --> <string name="unarchive_body_text">This app will begin to download in the background</string> <string name="unarchive_body_text">This app will begin to download in the background</string> <!-- The action to restore (i.e. re-install, re-download) an app after parts of the app have been previously moved <!-- The action to restore (i.e. re-install, re-download) an app after parts of the app have been previously moved Loading
packages/PackageInstaller/src/com/android/packageinstaller/UnarchiveActivity.java +21 −3 Original line number Original line Diff line number Diff line Loading @@ -25,10 +25,12 @@ import android.app.DialogFragment; import android.app.Fragment; import android.app.Fragment; import android.app.FragmentTransaction; import android.app.FragmentTransaction; import android.content.IntentSender; import android.content.IntentSender; import android.content.pm.InstallSourceInfo; import android.content.pm.PackageInstaller; import android.content.pm.PackageInstaller; import android.content.pm.PackageManager; import android.content.pm.PackageManager; import android.os.Bundle; import android.os.Bundle; import android.os.Process; import android.os.Process; import android.text.TextUtils; import android.util.Log; import android.util.Log; import androidx.annotation.NonNull; import androidx.annotation.NonNull; Loading Loading @@ -97,14 +99,30 @@ public class UnarchiveActivity extends Activity { String appTitle = pm.getApplicationInfo(mPackageName, String appTitle = pm.getApplicationInfo(mPackageName, PackageManager.ApplicationInfoFlags.of( PackageManager.ApplicationInfoFlags.of( MATCH_ARCHIVED_PACKAGES)).loadLabel(pm).toString(); MATCH_ARCHIVED_PACKAGES)).loadLabel(pm).toString(); // TODO(ag/25387215) Get the real installer title here after fixing getInstallSource for String installerTitle = getResponsibleInstallerTitle(pm, // archived apps. pm.getInstallSourceInfo(mPackageName)); showDialogFragment(appTitle, "installerTitle"); showDialogFragment(appTitle, installerTitle); } catch (PackageManager.NameNotFoundException e) { } catch (PackageManager.NameNotFoundException e) { Log.e(TAG, "Invalid packageName: " + e.getMessage()); Log.e(TAG, "Invalid packageName: " + e.getMessage()); } } } } private String getResponsibleInstallerTitle(PackageManager pm, InstallSourceInfo installSource) throws PackageManager.NameNotFoundException { String packageName = TextUtils.isEmpty(installSource.getUpdateOwnerPackageName()) ? installSource.getInstallingPackageName() : installSource.getUpdateOwnerPackageName(); if (packageName == null) { // Should be unreachable. Log.e(TAG, "Installer not found."); setResult(Activity.RESULT_FIRST_USER); finish(); return ""; } return pm.getApplicationInfo(packageName, /* flags= */ 0).loadLabel(pm).toString(); } @NonNull @NonNull private String[] getRequestedPermissions(String callingPackage) { private String[] getRequestedPermissions(String callingPackage) { String[] requestedPermissions = null; String[] requestedPermissions = null; Loading