Adding "Install Other Apps" in App Info page

Added a preference link to manage external sources in the app info
screen just like other special access permissions.

Test: Manually checked that the link appears on apps once their app op
is set to allow or deny.
Also, added some basic robolectric unit tests:
make -j32 RunSettingsRoboTests

Bug: 35481942
Change-Id: If687778b7a64fb7d278508b78d06272253a98e3e
This commit is contained in:
Suprabh Shukla
2017-02-28 17:08:10 -08:00
parent d030d7b58f
commit 86d52db588
6 changed files with 173 additions and 7 deletions

View File

@@ -27,6 +27,7 @@ import android.support.v7.preference.Preference.OnPreferenceChangeListener;
import com.android.settings.R;
import com.android.settings.applications.AppStateInstallAppsBridge.InstallAppsState;
import com.android.settingslib.applications.ApplicationsState.AppEntry;
public class ExternalSourcesDetails extends AppInfoWithHeader
implements OnPreferenceChangeListener {
@@ -74,6 +75,18 @@ public class ExternalSourcesDetails extends AppInfoWithHeader
return false;
}
static CharSequence getPreferenceSummary(Context context, AppEntry entry) {
final InstallAppsState appsState;
if (entry.extraInfo instanceof InstallAppsState) {
appsState = (InstallAppsState) entry.extraInfo;
} else {
appsState = new AppStateInstallAppsBridge(context, null, null)
.createInstallAppsStateFor(entry.info.packageName, entry.info.uid);
}
return context.getString(appsState.canInstallApps() ? R.string.external_source_trusted
: R.string.external_source_untrusted);
}
private void setCanInstallApps(boolean newState) {
mAppOpsManager.setMode(AppOpsManager.OP_REQUEST_INSTALL_PACKAGES,
mPackageInfo.applicationInfo.uid, mPackageName,