因?yàn)橛昧诉\(yùn)行時(shí)權(quán)限后,國內(nèi)廠商你只要拒絕了,你再運(yùn)行一次代碼也不會(huì)彈出運(yùn)行時(shí)的權(quán)限窗口,這樣你只能引導(dǎo)用戶自己去權(quán)限界面授權(quán)了。
內(nèi)容引用來自:https://blog.csdn.net/u014361280/article/details/107935313如果看了不詳細(xì)可以來這里看看。
/***
* 使用 ResolveInfo 獲取 應(yīng)用列表信息
* @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>