android 5.0 创建多用户 双开多开应用(2)

上一讲 讲了如何创建一个user

android 5.0 创建多用户 双开多开应用(1)

为什么要创建User  例如window 系统创建了一个user 会在当前用户下进行操作,而android 多用户体系就像window系统

创建了一个user之后在当前user下进行操作,就可以再安装或者启动一个应用。

有了一个user 之后在这个user下创建一个工作空间,在工作空间下安装 启动apk 就可以双开了。

具体类操作:

    package android.app.admin;  

    import android.content.ComponentName;
    import android.content.Intent;
    import android.content.IntentFilter;
    import android.net.ProxyInfo;
    import android.os.Bundle;
    import android.os.PersistableBundle;
    import android.os.RemoteCallback;
    import android.os.UserHandle;
    import java.util.List;  

    /**
     * Internal IPC interface to the device policy service.
     * {@hide}
     */
    interface IDevicePolicyManager {
        void setPasswordQuality(in ComponentName who, int quality, int userHandle);
        int getPasswordQuality(in ComponentName who, int userHandle);  

        void setPasswordMinimumLength(in ComponentName who, int length, int userHandle);
        int getPasswordMinimumLength(in ComponentName who, int userHandle);  

        void setPasswordMinimumUpperCase(in ComponentName who, int length, int userHandle);
        int getPasswordMinimumUpperCase(in ComponentName who, int userHandle);  

        void setPasswordMinimumLowerCase(in ComponentName who, int length, int userHandle);
        int getPasswordMinimumLowerCase(in ComponentName who, int userHandle);  

        void setPasswordMinimumLetters(in ComponentName who, int length, int userHandle);
        int getPasswordMinimumLetters(in ComponentName who, int userHandle);  

        void setPasswordMinimumNumeric(in ComponentName who, int length, int userHandle);
        int getPasswordMinimumNumeric(in ComponentName who, int userHandle);  

        void setPasswordMinimumSymbols(in ComponentName who, int length, int userHandle);
        int getPasswordMinimumSymbols(in ComponentName who, int userHandle);  

        void setPasswordMinimumNonLetter(in ComponentName who, int length, int userHandle);
        int getPasswordMinimumNonLetter(in ComponentName who, int userHandle);  

        void setPasswordHistoryLength(in ComponentName who, int length, int userHandle);
        int getPasswordHistoryLength(in ComponentName who, int userHandle);  

        void setPasswordExpirationTimeout(in ComponentName who, long expiration, int userHandle);
        long getPasswordExpirationTimeout(in ComponentName who, int userHandle);  

        long getPasswordExpiration(in ComponentName who, int userHandle);  

        boolean isActivePasswordSufficient(int userHandle);
        int getCurrentFailedPasswordAttempts(int userHandle);
        int getProfileWithMinimumFailedPasswordsForWipe(int userHandle);  

        void setMaximumFailedPasswordsForWipe(in ComponentName admin, int num, int userHandle);
        int getMaximumFailedPasswordsForWipe(in ComponentName admin, int userHandle);  

        boolean resetPassword(String password, int flags, int userHandle);  

        void setMaximumTimeToLock(in ComponentName who, long timeMs, int userHandle);
        long getMaximumTimeToLock(in ComponentName who, int userHandle);  

        void lockNow();  

        void wipeData(int flags, int userHandle);  

        ComponentName setGlobalProxy(in ComponentName admin, String proxySpec, String exclusionList, int userHandle);
        ComponentName getGlobalProxyAdmin(int userHandle);
        void setRecommendedGlobalProxy(in ComponentName admin, in ProxyInfo proxyInfo);  

        int setStorageEncryption(in ComponentName who, boolean encrypt, int userHandle);
        boolean getStorageEncryption(in ComponentName who, int userHandle);
        int getStorageEncryptionStatus(int userHandle);  

        void setCameraDisabled(in ComponentName who, boolean disabled, int userHandle);
        boolean getCameraDisabled(in ComponentName who, int userHandle);  

        void setScreenCaptureDisabled(in ComponentName who, int userHandle, boolean disabled);
        boolean getScreenCaptureDisabled(in ComponentName who, int userHandle);  

        void setKeyguardDisabledFeatures(in ComponentName who, int which, int userHandle);
        int getKeyguardDisabledFeatures(in ComponentName who, int userHandle);  

        void setActiveAdmin(in ComponentName policyReceiver, boolean refreshing, int userHandle);
        boolean isAdminActive(in ComponentName policyReceiver, int userHandle);
        List<ComponentName> getActiveAdmins(int userHandle);
        boolean packageHasActiveAdmins(String packageName, int userHandle);
        void getRemoveWarning(in ComponentName policyReceiver, in RemoteCallback result, int userHandle);
        void removeActiveAdmin(in ComponentName policyReceiver, int userHandle);
        boolean hasGrantedPolicy(in ComponentName policyReceiver, int usesPolicy, int userHandle);  

        void setActivePasswordState(int quality, int length, int letters, int uppercase, int lowercase,
            int numbers, int symbols, int nonletter, int userHandle);
        void reportFailedPasswordAttempt(int userHandle);
        void reportSuccessfulPasswordAttempt(int userHandle);  

        boolean setDeviceOwner(String packageName, String ownerName);
        boolean isDeviceOwner(String packageName);
        String getDeviceOwner();
        String getDeviceOwnerName();
        void clearDeviceOwner(String packageName);  

        boolean setProfileOwner(in ComponentName who, String ownerName, int userHandle);
        ComponentName getProfileOwner(int userHandle);
        String getProfileOwnerName(int userHandle);  

     void setProfileEnabled(in ComponentName who);//启动工作空间  

     void setProfileName(in ComponentName who, String profileName)
        void clearProfileOwner(in ComponentName who);  

     boolean hasUserSetupCompleted();  

        boolean installCaCert(in ComponentName admin, in byte[] certBuffer);
        void uninstallCaCert(in ComponentName admin, in String alias);
        void enforceCanManageCaCerts(in ComponentName admin);  

        boolean installKeyPair(in ComponentName who, in byte[] privKeyBuffer, in byte[] certBuffer, String alias);  

        void addPersistentPreferredActivity(in ComponentName admin, in IntentFilter filter, in ComponentName activity);
        void clearPackagePersistentPreferredActivities(in ComponentName admin, String packageName);  

        void setApplicationRestrictions(in ComponentName who, in String packageName, in Bundle settings);
        Bundle getApplicationRestrictions(in ComponentName who, in String packageName);  

        void setRestrictionsProvider(in ComponentName who, in ComponentName provider);
        ComponentName getRestrictionsProvider(int userHandle);  

        void setUserRestriction(in ComponentName who, in String key, boolean enable);  

     void addCrossProfileIntentFilter(in ComponentName admin, in IntentFilter filter, int flags);//创建工作空间  

      void clearCrossProfileIntentFilters(in ComponentName admin);  

        boolean setPermittedAccessibilityServices(in ComponentName admin,in List packageList);
        List getPermittedAccessibilityServices(in ComponentName admin);
        List getPermittedAccessibilityServicesForUser(int userId);  

        boolean setPermittedInputMethods(in ComponentName admin,in List packageList);
        List getPermittedInputMethods(in ComponentName admin);
        List getPermittedInputMethodsForCurrentUser();  

        boolean setApplicationHidden(in ComponentName admin, in String packageName, boolean hidden);
        boolean isApplicationHidden(in ComponentName admin, in String packageName);  

        UserHandle createUser(in ComponentName who, in String name);
        UserHandle createAndInitializeUser(in ComponentName who, in String name, in String profileOwnerName, in ComponentName profileOwnerComponent, in Bundle adminExtras);
        boolean removeUser(in ComponentName who, in UserHandle userHandle);
        boolean switchUser(in ComponentName who, in UserHandle userHandle);  

        void enableSystemApp(in ComponentName admin, in String packageName);//设置app的状态  

     int enableSystemAppWithIntent(in ComponentName admin, in Intent intent);  

        void setAccountManagementDisabled(in ComponentName who, in String accountType, in boolean disabled);
        String[] getAccountTypesWithManagementDisabled();
        String[] getAccountTypesWithManagementDisabledAsUser(int userId);  

        void setLockTaskPackages(in ComponentName who, in String[] packages);
        String[] getLockTaskPackages(in ComponentName who);
        boolean isLockTaskPermitted(in String pkg);  

        void setGlobalSetting(in ComponentName who, in String setting, in String value);
        void setSecureSetting(in ComponentName who, in String setting, in String value);  

        void setMasterVolumeMuted(in ComponentName admin, boolean on);
        boolean isMasterVolumeMuted(in ComponentName admin);  

        void notifyLockTaskModeChanged(boolean isEnabled, String pkg, int userId);  

        void setUninstallBlocked(in ComponentName admin, in String packageName, boolean uninstallBlocked);
        boolean isUninstallBlocked(in ComponentName admin, in String packageName);  

        void setCrossProfileCallerIdDisabled(in ComponentName who, boolean disabled);
        boolean getCrossProfileCallerIdDisabled(in ComponentName who);
        boolean getCrossProfileCallerIdDisabledForUser(int userId);  

        void setTrustAgentConfiguration(in ComponentName admin, in ComponentName agent,
                in PersistableBundle args, int userId);
        List<PersistableBundle> getTrustAgentConfiguration(in ComponentName admin,
                in ComponentName agent, int userId);  

        boolean addCrossProfileWidgetProvider(in ComponentName admin, String packageName);
        boolean removeCrossProfileWidgetProvider(in ComponentName admin, String packageName);
        List<String> getCrossProfileWidgetProviders(in ComponentName admin);  

        void setAutoTimeRequired(in ComponentName who, int userHandle, boolean required);
        boolean getAutoTimeRequired();  

        boolean isRemovingAdmin(in ComponentName adminReceiver, int userHandle);
    }
时间: 2024-08-03 10:33:40

android 5.0 创建多用户 双开多开应用(2)的相关文章

android 5.0 创建多用户 双开多开应用(1)

Andriod5.0多用户 双开应用 android多用户是5.0之后有的,类似windows的账户系统 不过官方还没有完全确认,API大都是hide状态 我这里提供一种方式并不适用所有的,由于我们有定制化手机,所以有定制化的服务可以开发,所以只需要将源码平台化编译一把,将所需要的类抽取出来,打成jar,再通过AIDL方式暴露出相应的接口,当然这个服务也是系统服务.我们再去开发只需要调用相应AIDL提供相应的接口即可. 下面来详细的说明: 1.首先系统服务 android:sharedUserI

Getting started with &#39;User Accounts&#39; on Android 5.0 Lollipop (android的多用户支持)

With Android 5.0 Lollipop, Google is adding true multi-user support for tablets and smartphones alike. When Google released Android 4.2 it included multiple user accounts for tablets; however, smartphone users were left in the cold. (In Google's defe

android源码探索----多用户下phone进程问题

android4.2增加了多用户功能,终于在迟迟之后与linux保持了一致.但是手机上的多用户其实是相当鸡肋的,试想手机这种移动设备基本 上就是每一个人的唯一id,所以基本上不存在多用户共用设备的情况.也正因为此以及专利的原因,所以电话上的多用户功能是关闭的,只有平板上的多用户是打 开的.但还是要感谢谷歌开发人员引入多用户机制,这样可以帮助开发一些安全系统有极大帮助. 但打开多用户之后,有一个比较蛋疼的地方是无法在多用户中打电话发短信.查看源码的知,这是android对于电话通信这一块根本没有做

Android编程动态创建视图View的方法

在Android开 发中,在Activity中关联视图View是一般使用setContentView方法,该方法一种参数是使用XML资源直接创 建:setContentView (int layoutResID),指定layout中的一个XML的ID即可,这种方法简单.另一个方法是 setContentView(android.view.View),参数是指定一个视图View对象,这种方法可以使用自定义的视图类. 在一些场合中,需要对View进行一些定制处理,比如获取到Canvas进行图像绘制,

android studio 0.8.1使用和遇到问题解决

谷歌6月底发布了五大系统,并且android studio同步升级到了android studio 0.8.1.升级了的android studio确实有一些新的变化,运行速度变快,并且还可以选择开发不同的产品,本着尝试新技术的心情,过了一把瘾.现在和大家一起来看看. 由于GFW封了google,所以现在android studio可能有些同仁下不到,由于公司的原因,无法上传到CSDN上,有点遗憾.不过没关系,我们先睹为快,先看看东西怎么样. JDK的东西和问题我在这里就不重复讲了,直接进入安装

Android开发之深入理解Android 7.0系统权限更改相关文档

摘要: Android 6.0之后的版本增加了运行时权限,应用程序在执行每个需要系统权限的功能时,需要添加权限请求代码(默认权限禁止),否则应用程序无法响应:Android 7.0在Android 6.0的基础上,对系统权限进一步更改,这次的权限更改包括三个方面: APP应用程序的私有文件不再向使用者放宽 Intent组件传递file://URI的方式可能给接收器留下无法访问的路径,触发FileUriExposedException异常,推荐使用FileProvider DownloadMana

Android中用ListView创建应用商店时的几个优化

package com.example.ex01_1; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection; import java.util.Arra

[Android编译(二)] 从谷歌官网下载android 6.0源码、编译并刷入nexus 6p手机

1 前言 经过一周的奋战,终于从谷歌官网上下载最新的android 6.0.1_r62源码,编译成功,并成功的刷入nexus6p,接着root完毕,现写下这篇博客记录一下实践过程. 2 简介 自己下载android系统源码,修改定制,然后编译刷入安卓手机,想想还有点小激动呢.简单点说一句话--定制我们自己的MIUI,这就是android的魅力,这篇博客博主就来教大家实现自己的定制系统. 首先,要明白下面的基础知识: (1) 什么是aosp? aosp就是android open source p

Android 6.0 动态权限申请注意事项

<span style="font-size:24px;color:#ffff00;background-color: rgb(0, 0, 153);"><strong>Android 6.0 权限区分</strong></span> Android 6.0 为了保护用户隐私,将一些权限的申请放在了应用运行的时候去申请, 比如以往的开发中,开发人员只需要将需要的权限在清单文件中配置即可,安装后用户可以在设置中的应用信息中看到:XX应用以获