Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何获取android中所有设备管理员(活动和非活动)的列表?_Android_Api - Fatal编程技术网

如何获取android中所有设备管理员(活动和非活动)的列表?

如何获取android中所有设备管理员(活动和非活动)的列表?,android,api,Android,Api,GoogleAPI允许我们通过getActiveAdmins()方法获取设备中所有活动管理员的列表。但是,我的要求是,我需要设备中所有可能的管理员的列表,无论是否处于活动状态。有什么方法可以做到这一点吗 谢谢您可以通过以下代码找到应用程序列表 final Intent deviceAdminIntent = new Intent("android.app.action.DEVICE_ADMIN_ENABLED", null); final List<ResolveInfo> pkgA

GoogleAPI允许我们通过getActiveAdmins()方法获取设备中所有活动管理员的列表。但是,我的要求是,我需要设备中所有可能的管理员的列表,无论是否处于活动状态。有什么方法可以做到这一点吗


谢谢

您可以通过以下代码找到应用程序列表

final Intent deviceAdminIntent = new Intent("android.app.action.DEVICE_ADMIN_ENABLED", null);
final List<ResolveInfo> pkgAppsList = getPackageManager().queryBroadcastReceivers(deviceAdminIntent, 0);
for (ResolveInfo aResolveInfo : pkgAppsList) {
    String pkg = aResolveInfo.activityInfo.applicationInfo.packageName;
        String name = aResolveInfo.activityInfo.applicationInfo.loadLabel(getPackageManager()).toString();

    System.out.println("Package :: " + pkg);
    System.out.println("Name :: " + name);
}
final Intent deviceadmin=new Intent(“android.app.action.DEVICE\u ADMIN\u ENABLED”,null);
最终列表pkgAppsList=getPackageManager().QueryBroadCastReceiver(设备管理,0);
对于(ResolveInfo aResolveInfo:pkgAppsList){
字符串pkg=aResolveInfo.activityInfo.applicationInfo.packageName;
String name=aResolveInfo.activityInfo.applicationInfo.loadLabel(getPackageManager()).toString();
System.out.println(“包::”+pkg);
System.out.println(“名称::”+Name);
}
您可以在应用程序的ResolveInfo中获取所有必要的数据。您可以检查resolveinfojavadoc


我编写了一个方法,它返回与

private List getalladmin(Context-mContext){
列表结果=新建ArrayList();
//阅读所有可以收听android.app.action.DEVICE\u ADMIN\u的接收器
//您可以添加可用于DeviceAdminReceiver的所有其他操作
最终意图设备管理=新意图(“android.app.action.DEVICE\u ADMIN\u ENABLED”,null);
最终列表pkgAppsList=mContext.getPackageManager().QueryBroadCastReceiver(设备管理,0);
对于(ResolveInfo aResolveInfo:pkgAppsList){
//准备组件并添加到列表中
结果.添加(新组件名称(aResolveInfo.activityInfo.applicationInfo.packageName,
aResolveInfo.activityInfo.name);
//字符串pkg=aResolveInfo.activityInfo.applicationInfo.packageName;
//String name=aResolveInfo.activityInfo.applicationInfo.loadLabel(getPackageManager()).toString();
//System.out.println(“包::”+pkg);
//System.out.println(“名称::”+Name);
}
返回结果;
}

您可以通过以下代码找到应用程序列表

final Intent deviceAdminIntent = new Intent("android.app.action.DEVICE_ADMIN_ENABLED", null);
final List<ResolveInfo> pkgAppsList = getPackageManager().queryBroadcastReceivers(deviceAdminIntent, 0);
for (ResolveInfo aResolveInfo : pkgAppsList) {
    String pkg = aResolveInfo.activityInfo.applicationInfo.packageName;
        String name = aResolveInfo.activityInfo.applicationInfo.loadLabel(getPackageManager()).toString();

    System.out.println("Package :: " + pkg);
    System.out.println("Name :: " + name);
}
final Intent deviceadmin=new Intent(“android.app.action.DEVICE\u ADMIN\u ENABLED”,null);
最终列表pkgAppsList=getPackageManager().QueryBroadCastReceiver(设备管理,0);
对于(ResolveInfo aResolveInfo:pkgAppsList){
字符串pkg=aResolveInfo.activityInfo.applicationInfo.packageName;
String name=aResolveInfo.activityInfo.applicationInfo.loadLabel(getPackageManager()).toString();
System.out.println(“包::”+pkg);
System.out.println(“名称::”+Name);
}
您可以在应用程序的ResolveInfo中获取所有必要的数据。您可以检查resolveinfojavadoc


我编写了一个方法,它返回与

private List getalladmin(Context-mContext){
列表结果=新建ArrayList();
//阅读所有可以收听android.app.action.DEVICE\u ADMIN\u的接收器
//您可以添加可用于DeviceAdminReceiver的所有其他操作
最终意图设备管理=新意图(“android.app.action.DEVICE\u ADMIN\u ENABLED”,null);
最终列表pkgAppsList=mContext.getPackageManager().QueryBroadCastReceiver(设备管理,0);
对于(ResolveInfo aResolveInfo:pkgAppsList){
//准备组件并添加到列表中
结果.添加(新组件名称(aResolveInfo.activityInfo.applicationInfo.packageName,
aResolveInfo.activityInfo.name);
//字符串pkg=aResolveInfo.activityInfo.applicationInfo.packageName;
//String name=aResolveInfo.activityInfo.applicationInfo.loadLabel(getPackageManager()).toString();
//System.out.println(“包::”+pkg);
//System.out.println(“名称::”+Name);
}
返回结果;
}

您可以在以下Android设备管理设置源代码中找到必要的代码:

DevicePolicyManager mDPM;//=(DevicePolicyManager)getActivity().getSystemService(Context.DEVICE\u POLICY\u SERVICE);
final HashSet mActiveAdmins=新HashSet();
最终ArrayList mAvailableAdmins=新ArrayList();
...
mActiveAdmins.clear();
List cur=mDPM.getActiveAdmins();
如果(cur!=null){

对于(int i=0;i,您可以在以下Android设备管理设置源代码中找到必要的代码:

DevicePolicyManager mDPM;//=(DevicePolicyManager)getActivity().getSystemService(Context.DEVICE\u POLICY\u SERVICE);
final HashSet mActiveAdmins=新HashSet();
最终ArrayList mAvailableAdmins=新ArrayList();
...
mActiveAdmins.clear();
List cur=mDPM.getActiveAdmins();
如果(cur!=null){

对于(int i=0;i@PankajKumar将只返回系统运行应用程序所有已启用的应用程序我已找到系统安装的应用程序,但我只想知道哪个系统应用程序处于活动状态还是处于非活动状态?@Pankaj Kumar将只返回系统运行应用程序所有已启用的应用程序我已找到系统安装的应用程序b但我只想知道哪个系统应用是活动的还是非活动的?我如何找到每个包使用的内存(活动或非活动)?我如何找到每个包使用的内存(活动或非活动)?
DevicePolicyManager mDPM; // = (DevicePolicyManager) getActivity().getSystemService(Context.DEVICE_POLICY_SERVICE);
final HashSet<ComponentName> mActiveAdmins = new HashSet<ComponentName>();
final ArrayList<DeviceAdminInfo> mAvailableAdmins = new ArrayList<DeviceAdminInfo>();

...

    mActiveAdmins.clear();
    List<ComponentName> cur = mDPM.getActiveAdmins();
    if (cur != null) {
        for (int i=0; i<cur.size(); i++) {
            mActiveAdmins.add(cur.get(i));
        }
    }
    mAvailableAdmins.clear();
    List<ResolveInfo> avail = getActivity().getPackageManager().queryBroadcastReceivers(
            new Intent(DeviceAdminReceiver.ACTION_DEVICE_ADMIN_ENABLED),
            PackageManager.GET_META_DATA | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS);
    if (avail == null) {
        avail = Collections.emptyList();
    }
    // Some admins listed in mActiveAdmins may not have been found by the above query.
    // We thus add them separately.
    Set<ComponentName> activeAdminsNotInAvail = new HashSet<ComponentName>(mActiveAdmins);
    for (ResolveInfo ri : avail) {
        ComponentName riComponentName =
                new ComponentName(ri.activityInfo.packageName, ri.activityInfo.name);
        activeAdminsNotInAvail.remove(riComponentName);
    }
    if (!activeAdminsNotInAvail.isEmpty()) {
        avail = new ArrayList<ResolveInfo>(avail);
        PackageManager packageManager = getActivity().getPackageManager();
        for (ComponentName unlistedActiveAdmin : activeAdminsNotInAvail) {
            List<ResolveInfo> resolved = packageManager.queryBroadcastReceivers(
                    new Intent().setComponent(unlistedActiveAdmin),
                    PackageManager.GET_META_DATA
                            | PackageManager.GET_DISABLED_UNTIL_USED_COMPONENTS);
            if (resolved != null) {
                avail.addAll(resolved);
            }
        }
    }
    for (int i = 0, count = avail.size(); i < count; i++) {
        ResolveInfo ri = avail.get(i);
        try {
            DeviceAdminInfo dpi = new DeviceAdminInfo(getActivity(), ri);
            if (dpi.isVisible() || mActiveAdmins.contains(dpi.getComponent())) {
                mAvailableAdmins.add(dpi);
            }
        } catch (XmlPullParserException e) {
            Log.w(TAG, "Skipping " + ri.activityInfo, e);
        } catch (IOException e) {
            Log.w(TAG, "Skipping " + ri.activityInfo, e);
        }
    }

    getListView().setAdapter(new PolicyListAdapter());