Android运行时权限:
(1)在清单文件中加入权限声明
(2)借助ContextCompat.checkSelfPermission()方法,利用方法返回值与PackageManager.PERMINSSION_GRANTED 比较,相等表示已授权,不等未授权
( 3 ) 若没有授权,调用ActivityCompat.requestPermission()方法申请授权
数据源视图适配器加载逻辑顺序:
1.主线程onCreate初始化视图,
2.主线程onCreate初始化适配器,并将适配器与视图绑定,
3.子线程加载耗时数据初始化数据源,
4.子线程数据源更新后通知适配器更新数据,(appAdapter.notifyDataSetChanged();//刷新适配器)
5.主线程显示数据。
读取系统应用信息:
PackageManager pm = this.getPackageManager(); // 获得PackageManager对象
Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
// 通过查询,获得所有ResolveInfo对象.
List<ResolveInfo> resolveInfos = pm
.queryIntentActivities(mainIntent, PackageManager.MATCH_DEFAULT_ONLY);
for (ResolveInfo reInfo : resolveInfos) {
String activityName = reInfo.activityInfo.name;
// 获得该应用程序的启动Activity的name
String pkgName = reInfo.activityInfo.packageName;
// 获得应用程序的包名
String appLabel = (String) reInfo.loadLabel(pm);
// 获得应用程序的Label
Drawable icon = reInfo.loadIcon(pm);
// 获得应用程序图标
}