Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 3cddb89c authored by Svet Ganov's avatar Svet Ganov
Browse files

Add APIs for verifier to grant at install and revoke permissions

bug:22231699

Change-Id: I679bb4a1f99eaa7d3984a4e6db6a04dca4574a18
parent b9b20815
Loading
Loading
Loading
Loading
+3 −1
Original line number Original line Diff line number Diff line
@@ -11,7 +11,9 @@
    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
    <uses-permission android:name="android.permission.CLEAR_APP_USER_DATA" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.MANAGE_USERS" />
    <uses-permission android:name="android.permission.GRANT_REVOKE_PERMISSIONS" />
    <uses-permission android:name="android.permission.GRANT_RUNTIME_PERMISSIONS" />
    <uses-permission android:name="android.permission.REVOKE_RUNTIME_PERMISSIONS" />
    <uses-permission android:name="android.permission.INSTALL_GRANT_RUNTIME_PERMISSIONS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
    <uses-permission android:name="android.permission.READ_INSTALL_SESSIONS" />
    <uses-permission android:name="android.permission.READ_INSTALL_SESSIONS" />
    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
    <uses-permission android:name="android.permission.UPDATE_APP_OPS_STATS" />
+38 −38
Original line number Original line Diff line number Diff line
@@ -126,12 +126,15 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
                }
                }
            }
            }
        });
        });

        // If the app supports runtime permissions the new permissions will
        // be requested at runtime, hence we do not show them at install.
        boolean supportsRuntimePermissions = mPkgInfo.applicationInfo.targetSdkVersion
                >= Build.VERSION_CODES.MNC;
        boolean permVisible = false;
        boolean permVisible = false;
        mScrollView = null;
        mScrollView = null;
        mOkCanInstall = false;
        mOkCanInstall = false;
        int msg = 0;
        int msg = 0;
        if (mPkgInfo != null) {

        AppSecurityPermissions perms = new AppSecurityPermissions(this, mPkgInfo);
        AppSecurityPermissions perms = new AppSecurityPermissions(this, mPkgInfo);
        final int N = perms.getPermissionCount(AppSecurityPermissions.WHICH_ALL);
        final int N = perms.getPermissionCount(AppSecurityPermissions.WHICH_ALL);
        if (mAppInfo != null) {
        if (mAppInfo != null) {
@@ -140,14 +143,18 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
                    : R.string.install_confirm_question_update;
                    : R.string.install_confirm_question_update;
            mScrollView = new CaffeinatedScrollView(this);
            mScrollView = new CaffeinatedScrollView(this);
            mScrollView.setFillViewport(true);
            mScrollView.setFillViewport(true);
                boolean newPermissionsFound =
            boolean newPermissionsFound = false;
            if (!supportsRuntimePermissions) {
                newPermissionsFound =
                        (perms.getPermissionCount(AppSecurityPermissions.WHICH_NEW) > 0);
                        (perms.getPermissionCount(AppSecurityPermissions.WHICH_NEW) > 0);
                mInstallFlowAnalytics.setNewPermissionsFound(newPermissionsFound);
                mInstallFlowAnalytics.setNewPermissionsFound(newPermissionsFound);
                if (newPermissionsFound) {
                if (newPermissionsFound) {
                    permVisible = true;
                    permVisible = true;
                    mScrollView.addView(perms.getPermissionsView(
                    mScrollView.addView(perms.getPermissionsView(
                            AppSecurityPermissions.WHICH_NEW));
                            AppSecurityPermissions.WHICH_NEW));
                } else {
                }
            }
            if (!supportsRuntimePermissions && !newPermissionsFound) {
                LayoutInflater inflater = (LayoutInflater)getSystemService(
                LayoutInflater inflater = (LayoutInflater)getSystemService(
                        Context.LAYOUT_INFLATER_SERVICE);
                        Context.LAYOUT_INFLATER_SERVICE);
                TextView label = (TextView)inflater.inflate(R.layout.label, null);
                TextView label = (TextView)inflater.inflate(R.layout.label, null);
@@ -160,7 +167,7 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
            findViewById(R.id.tabscontainer).setVisibility(View.GONE);
            findViewById(R.id.tabscontainer).setVisibility(View.GONE);
            findViewById(R.id.divider).setVisibility(View.VISIBLE);
            findViewById(R.id.divider).setVisibility(View.VISIBLE);
        }
        }
            if (N > 0) {
        if (!supportsRuntimePermissions && N > 0) {
            permVisible = true;
            permVisible = true;
            LayoutInflater inflater = (LayoutInflater)getSystemService(
            LayoutInflater inflater = (LayoutInflater)getSystemService(
                    Context.LAYOUT_INFLATER_SERVICE);
                    Context.LAYOUT_INFLATER_SERVICE);
@@ -173,7 +180,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
            adapter.addTab(tabHost.newTabSpec(TAB_ID_ALL).setIndicator(
            adapter.addTab(tabHost.newTabSpec(TAB_ID_ALL).setIndicator(
                    getText(R.string.allPerms)), root);
                    getText(R.string.allPerms)), root);
        }
        }
        }
        mInstallFlowAnalytics.setPermissionsDisplayed(permVisible);
        mInstallFlowAnalytics.setPermissionsDisplayed(permVisible);
        if (!permVisible) {
        if (!permVisible) {
            if (mAppInfo != null) {
            if (mAppInfo != null) {
@@ -392,12 +398,6 @@ public class PackageInstallerActivity extends Activity implements OnCancelListen
    }
    }


    private void initiateInstall() {
    private void initiateInstall() {
        if (mPkgInfo.applicationInfo
                .targetSdkVersion > Build.VERSION_CODES.LOLLIPOP_MR1) {
            startInstall();
            return;
        }

        String pkgName = mPkgInfo.packageName;
        String pkgName = mPkgInfo.packageName;
        // Check if there is already a package on the device with this name
        // Check if there is already a package on the device with this name
        // but it has been renamed to something else.
        // but it has been renamed to something else.