不用运行时取得全部已安装应用的信息


因为用了运行时权限后,国内厂商你只要拒绝了,你再运行一次代码也不会弹出运行时的权限窗口,这样你只能引导用户自己去权限界面授权了。

内容引用来自:https://blog.csdn.net/u014361280/article/details/107935313如果看了不详细可以来这里看看。

 /***
     * 使用 ResolveInfo 獲取 應用列表信息
     * @return 
     */
    private  List<AppInfo> loadAllApplication() {
        PackageManager manager = getActivity().getPackageManager();
        List<AppInfo> myAppInfos  = new ArrayList<AppInfo>();
        mLocalInstalledApps_Tmp  = new ArrayList<AppInfo_Tmp>();
        Intent intent = new Intent(Intent.ACTION_MAIN, null);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        List<ResolveInfo> availableActivities = manager.queryIntentActivities(intent, 0);
        int no=0;
        for (ResolveInfo ri : availableActivities) {
            ApplicationInfo applicationInfo = ri.activityInfo.applicationInfo;
            if((applicationInfo.flags & (ApplicationInfo.FLAG_UPDATED_SYSTEM_APP | ApplicationInfo.FLAG_SYSTEM)) > 0) {
                // It is a system app
            } else {
 
                Log.i(TAG, "loadAllApplication:  applicationInfo.packageName " + applicationInfo.packageName);
                Log.i(TAG, "loadAllApplication:  applicationInfo.label  " + applicationInfo.loadLabel(manager));
                no ++;
                AppInfo myAppInfo = new AppInfo();
                AppInfo_Tmp myAppInfo_Tmp = new AppInfo_Tmp();
                // app packageName
                myAppInfo.setPackageName(applicationInfo.packageName);
                myAppInfo_Tmp.setPackageName(applicationInfo.packageName);
                // app appName
                myAppInfo.setAppName(applicationInfo.loadLabel(manager).toString());
                if (ri.loadIcon(manager) ==null){
 
                    Log.i(TAG, "loadAllApplication: ri.loadIcon(manager) ==null");
                }else {
 
                  myAppInfo_Tmp.setAppIcon(ri.loadIcon(manager));
                }
 
 
                myAppInfos.add(myAppInfo);
                mLocalInstalledApps_Tmp.add(myAppInfo_Tmp);
            }
        }
        //Toast.makeText(getActivity(),"App no:"+no,Toast.LENGTH_SHORT).show();
        Log.i(TAG, "loadAllApplication: App no:"+no);
        return myAppInfos;
    }
    <queries>
        <intent>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent>
    </queries>

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注