日期: 2021 年 5 月 19 日

android适配6.0\7.0\8.0升级直接安装APP

android适配6.0\7.0\8.0升级直接安装APP

android的升级功能基本是必不可少的,但是google也是不断地为我们开发人员设置“障碍”,从6.0到7.0,再到8.0都需要作出相应调整。*近加班终于搞出来来了一套可以使用的代码,故写下来,作为笔记,也使各位同行能够指导一下。
如果按照这篇文章,我保你能完成升级功能

前期准备
三个:

权限申请框架AndPermission
AndroidNetworking框架引入
7.0文件适配
一、权限申请框架AndPermission

这个框架是我用过的*好用的,当然我用的也不多,我也写了*新的框架集成

二、AndroidNetworking框架引入

导包

implementation ‘com.amitshekhar.android:android-networking:1.0.2’
1
导包很简单,具体使用在代码中使用吧。

三、7.0文件适配

创建res/xml/file_paths.xml文件
<paths>
<external-path
name=”update”
path=””/>
</paths>

name:一个引用字符串。
path:文件夹“相对路径”,完整路径取决于当前的标签类型。path可以为空,表示指定目录下的所有文件、文件夹都可以被共享。

AndroidManifest.xml文件的”appliction”标签内添加如下语句
<provider
android:name=”android.support.v4.content.FileProvider”
android:authorities=”你的包名.fileprovider”
android:exported=”false”
android:grantUriPermissions=”true”>
<meta-data
android:name=”android.support.FILE_PROVIDER_PATHS”
android:resource=”@xml/file_paths” />
</provider>

android:name:provider你可以使用v4包提供的FileProvider,或者自定义的,只需要在name申明就好了,一般使用系统的就足够了。
android:authorities:类似schema,命名空间之类,后面会用到。
android:exported:false表示我们的provider不需要对外开放。
android:grantUriPermissions:申明为true,你才能获取临时共享权限。

开始升级
直接上代码了
1.一定条件下弹出升级框

new AlertDialog.Builder(DownActivity.this)
.setTitle(“版本更新”)
.setMessage(“发现新的app版本,请及时更新”)
.setNegativeButton(“暂不更新”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})
.setPositiveButton(“立即更新”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

//弹出进度条,先隐藏前一个dialog
dialog.dismiss();
downApk();
}
})
.create().show();

2.接上面方法,使用AndroidNetworking开始下载

/**
* 下载apk
*/
private void downApk() {
AndPermission.with(DownActivity.this)
.runtime()
.permission(Permission.Group.STORAGE)
.onGranted(permissions -> {
//申请成功后的动作
//显示进度的对话框
mDialog1 = new Dialog(DownActivity.this, R.style.Theme_AppCompat_Dialog_Alert);
View view = DownActivity.this.getLayoutInflater().inflate(R.layout.progress_dialog, null);
mProgressBar = view.findViewById(R.id.pb);
mPrecent = view.findViewById(R.id.tv_precent);
mDialog1.setContentView(view);
mDialog1.show();
String fileName = “football.apk”;
String dirPath3 = Utils.getRootDirPath(DownActivity.this);
final File fs = new File(dirPath3 + “/Download/”);
final String TAG = “AA”;

AndroidNetworking.download(downurl, fs.getAbsolutePath(), fileName)
.setTag(“downloadTest”)
.setPriority(Priority.MEDIUM)
.build()
.setDownloadProgressListener(new DownloadProgressListener() {
@Override
public void onProgress(final long bytesDownloaded, final long totalBytes) {
Log.e(TAG, bytesDownloaded+””);
Log.e(TAG+TAG, totalBytes+””);
runOnUiThread(new Runnable() {
@Override
public void run() {
//TODO long类型相除 根据下载进度,设置进度条
long tv_precent = bytesDownloaded * 100 / totalBytes;
mPrecent.setText((int)tv_precent + “%”);
mProgressBar.setProgress((int) tv_precent);
}
});
}
})
.startDownload(new DownloadListener() {
@Override
public void onDownloadComplete() {

Toast.makeText(DownActivity.this, “下载成功”, Toast.LENGTH_SHORT).show();
//调用方法去安装app
toInstall(DownActivity.this);
// }
}

@Override
public void onError(ANError error) {
// handle error
Log.e(TAG, “onError errorDetail : ” + error.getErrorDetail());
}
});
})
.onDenied(permissions -> {
// Storage permission are not allowed.
})
.start();
}

这里先申请读写内存卡权限,然后使用AndroidNetworking下载文件,下载完成后直接去安装

安装app
/**
* 安装apk
* @param context
*/
private void toInstall(Context context) {
File apkFile = getExternalFilesDir(“DownLoad/football.apk”);
/*android版本大于等于8.0*/
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
/*是否有安装软件的权限*/
boolean canInstall = context.getPackageManager().canRequestPackageInstalls();
if (!canInstall) {
AndPermission.with(DownActivity.this)
.install()
.file(apkFile)
.onGranted(file -> {
installAPK();
})
.onDenied(file -> {
Toast.makeText(context, “请求权限被拒*,无法自动安装软件!!!”, Toast.LENGTH_SHORT).show();
})
.start();
}else{
installAPK();
}
} else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && Build.VERSION.SDK_INT < Build.VERSION_CODES.O) {
/*androi版本小于7.0*/
installAPK();
}
}

判断android版本是否大于等于8.0,如果是则去判断有无安装未知来源权限,如果不是则直接去走安装流程

开始安装
// >=7.0安装
private void install7() {
Intent install = new Intent(Intent.ACTION_VIEW);
File apkFile = getExternalFilesDir(“DownLoad/football.apk”);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
install.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
Uri uriForFile = FileProvider.getUriForFile(DownActivity.this, “包名.fileprovider”, apkFile);
install.setDataAndType(uriForFile, “application/vnd.android.package-archive”);
} else {
install.setDataAndType(Uri.fromFile(apkFile), “application/vnd.android.package-archive”);
}

install.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(install);
}

结尾
我觉得这是一篇很使用的功能,故写下来以后自己可用,也可供各位老师指导。

Android 8.0 解决不能自动安装APK问题

Android8.0之前
未知应用安装权限默认开启,如下图所示

%title插图%num

Android8.0之后
未知应用安装权限默认关闭,且权限入口隐藏。

如何开启未知应用安装权限的入口,并设置允许安装?
1.在清单文件中添加权限

<uses-permission android:name=”android.permission.REQUEST_INSTALL_PACKAGES”/>

2.判断当前是否为8.0以上系统(在这之前也可以对7.0系统进行判断,这里代码没有贴出)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
boolean hasInstallPermission = isHasInstallPermissionWithO(context);
if (!hasInstallPermission) {
startInstallPermissionSettingActivity(context);
return;
}
}

3.如果为8.0以上系统,则判断是否有未知应用安装权限

@RequiresApi (api = Build.VERSION_CODES.O)
private boolean isHasInstallPermissionWithO(Context context){
if (context == null){
return false;
}
return context.getPackageManager().canRequestPackageInstalls();
}

4.如果没有未知应用安装权限,则需要手动开启

/**
* 开启设置安装未知来源应用权限界面
* @param context
*/
@RequiresApi (api = Build.VERSION_CODES.O)
private void startInstallPermissionSettingActivity(Context context) {
if (context == null){
return;
}
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
((Activity)context).startActivityForResult(intent,REQUEST_CODE_APP_INSTALL);
}

5.Activity回调(这一步根据需求来确定),下面代码是kotlin写的

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode== Activity.RESULT_OK ){
when(requestCode){
REQUEST_CODE_APP_INSTALL -> {
onSettingCheckUpdate()
}
}
}
}

2020年城镇非私营单位就业人员年平均工资97379元

  2020年全国城镇非私营单位就业人员年平均工资为97379元,比上年增加6878元,名义增长[1]7.6%,增速比2019年回落2.2个百分点。扣除价格因素,2020年全国城镇非私营单位就业人员年平均工资实际增长5.2%。 2011-2020年城镇非私营单位就业人员年平均工资及增速   分四大区域看,城镇非私营单位就业人员年平均工资由高到低依次是东部、西部、中部和东北地区,分别为112372元、88000元、78193元和77631元,比上年分别增长8.0%、7.4%、6.4%和8.2%。*高和*低地区的平均工资之比为1.45,与上年基本持平。 表1 2020年城镇非私营单位分四大区域就业人员年平均工资                                            单位:元,%
区 域2020年2019年增长速度
合 计97379 905017.6
东部地区112372104069 8.0
中部地区7819373457 6.4
西部地区8800081954 7.4
东北地区7763171721 8.2   分行业门类看,年平均工资*高的3个行业分别是信息传输、软件和信息技术服务业177544元,科学研究和技术服务业139851元,金融业133390元,分别为全国平均水平的1.82倍、1.44倍和1.37倍。年平均工资*低的3个行业分别是农、林、牧、渔业48540元,住宿和餐饮业48833元,居民服务、修理和其他服务业60722元,分别为全国平均水平的50%、50%和62%。   从增长速度看,年平均工资增速*高的3个行业依次为农、林、牧、渔业,公共管理、社会保障和社会组织,信息传输、软件和信息技术服务业,分别增长23.4%、10.7%和10.0%。增速*低的3个行业依次为住宿和餐饮业下降3.0%,居民服务、修理和其他服务业增长0.8%,金融业增长1.5%。 表2 2020年城镇非私营单位分行业就业人员年平均工资                                            单位:元,%
行 业2020年2019年增长速度
合 计97379905017.6 农、林、牧、渔业485403934023.4
采矿业96674910686.2
制造业82783781475.9
电力、热力、燃气及水生产和供应业1167281077338.3
建筑业69986655806.7
批发和零售业96521890478.4
交通运输、仓储和邮政业100642970503.7
住宿和餐饮业4883350346-3.0
信息传输、软件和信息技术服务业17754416135210.0
金融业1333901314051.5
房地产业83807801574.6
租赁和商务服务业92924881905.4
科学研究和技术服务业1398511334594.8
水利、环境和公共设施管理业63914611584.5
居民服务、修理和其他服务业60722602320.8
教育106474976819.0
卫生和社会工作1154491089036.0
文化、体育和娱乐业1120811077084.1
公共管理、社会保障和社会组织1044879436910.7   分登记注册类型看,年平均工资*高的是外商投资单位112089元,为全国平均水平的1.15倍;年平均工资*低的是集体单位68590元,为全国平均水平的70%。   从增长速度看,港澳台商投资单位年平均工资的增速*高,增长9.7%。除国有、集体和港澳台商投资单位以外,其他单位的平均工资增速均低于全国平均水平。 表3 2020年城镇非私营单位分登记注册类型就业人员年平均工资                                            单位:元,%
登记注册类型2020年2019年增长速度
合 计97379905017.6 国 有108132988999.3 集 体68590626129.5 有限责任公司84439795156.2 股份有限公司1085831030875.3 港澳台商投资100155913049.7 外商投资1120891066045.1 其 他74399724942.6   注[1]:文中以下增长,除特别指出外,均为名义增长。   附注   1.指标解释   (1)单位就业人员:指在本单位工作,并由单位支付劳动报酬的人员。   (2)工资总额:根据《关于工资总额组成的规定》(详见官网http://www.stats.gov.cn/zjtj/tjfg/xzfg/200207/t20020702_36026.html), 工资总额是指本单位在报告期内(季度或年度)直接支付给本单位就业人员的劳动报酬总额。包括计时工资、计件工资、*金、津贴和补贴、加班加点工资、特殊情况下支付的工资。   工资总额是税前工资,包括单位从个人工资中直接为其代扣或代缴的个人所得税、社会保险基金和住房公积金等个人缴纳部分,以及房费、水电费。   工资总额不论是计入成本的还是不计入成本的,不论是以货币形式支付的还是以实物形式支付的,均应列入工资总额的计算范围。   平均工资:是指在报告期内单位发放工资的人均水平。计算公式为:   2.统计范围   城镇地区非私营法人单位和统计上认定的视同法人单位的产业活动单位。具体包括国有单位、城镇集体单位、联营、股份制、外商投资、港澳台商投资等单位。   工资统计主要统计法人单位的就业人员,而个体就业人员、自由职业者等非单位就业人员不在工资统计范围内。   3.调查方法   根据国家统计局制定的《企业一套表统计调查制度》和《劳动工资统计调查制度》,对一套表法人单位采用全面调查的方法,对非一套表法人单位采用抽样调查的方法。   4.东中西部和东北地区划分方法 东部包括:北京、天津、河北、上海、江苏、浙江、福建、山东、广东和海南。 中部包括:山西、安徽、江西、河南、湖北和湖南。 西部包括:内蒙古、广西、重庆、四川、贵州、云南、西藏、陕西、甘肃、青海、宁夏和新疆。   东北包括:辽宁、吉林和黑龙江。   5.行业分类标准   工资统计的行业分类标准按照《国民经济行业分类》(GB/T4754-2017)执行。   6.登记注册类型   其他包括:股份合作、联营、其他内资。   7.上年基期数据以正式出版的《中国统计年鉴-2020》为准。

2020年城镇私营单位就业人员年平均工资57727元

  2020年全国城镇私营单位就业人员年平均工资为57727元,比上年增加4123元,名义增长[1]7.7%,增速比2019年回落0.4个百分点。扣除价格因素,2020年全国城镇私营单位就业人员年平均工资实际增长5.3%。 2011-2020年城镇私营单位就业人员年平均工资及增速 分四大区域看,城镇私营单位就业人员年平均工资由高到低依次是东部、西部、中部和东北地区,分别为63601元、50510元、48861元和43928元,比上年分别增长6.9%、8.0%、11.2%和10.2%。  表1 2020年城镇私营单位分四大区域就业人员年平均工资
                                           单位:元,%
区 域2020年2019年增长速度
合 计57727 53604 7.7 东部地区63601 59471 6.9 中部地区48861 43927 11.2 西部地区50510 46777 8.0 东北地区43928 39861 10.2   分行业门类看,年平均工资*高的3个行业分别为信息传输、软件和信息技术服务业101281元,金融业82930元,科学研究和技术服务业72233元,分别为全国平均水平的1.75倍、1.44倍和1.25倍。年平均工资*低的3个行业分别是农、林、牧、渔业38956元,住宿和餐饮业42258元,水利、环境和公共设施管理业43287元,分别为全国平均水平的67%、73%和75%。   从增长速度看,年平均工资增速*高的3个行业依次为信息传输、软件和信息技术服务业,采矿业和制造业,分别增长18.7%、9.8%和9.6%。增速*低的3个行业依次为教育,水利、环境和公共设施管理业以及住宿和餐饮业,分别下降4.6%、2.6%和0.4%。 表2 2020年城镇私营单位分行业就业人员年平均工资                                            单位:元,%
行 业2020年2019年增长速度
合 计5772753604 7.7
农、林、牧、渔业3895637760 3.2
采矿业5456349675 9.8
制造业5791052858 9.6
电力、热力、燃气及水生产和供应业5426849633 9.3
建筑业5730954167 5.8
批发和零售业5301848722 8.8
交通运输、仓储和邮政业5731354006 6.1
住宿和餐饮业4225842424 -0.4
信息传输、软件和信息技术服务业10128185301 18.7
金融业8293076107 9.0
房地产业5575954416 2.5
租赁和商务服务业5815557248 1.6
科学研究和技术服务业7223367642 6.8
水利、环境和公共设施管理业4328744444 -2.6
居民服务、修理和其他服务业4453643926 1.4
教育4844350761 -4.6
卫生和社会工作6068957140 6.2
文化、体育和娱乐业5130049289 4.1   注[1]:文中以下增长,除特别指出外,均为名义增长。   附注:   1.指标解释   (1)单位就业人员:是指在本单位工作,并由单位支付劳动报酬的人员。   (2)工资总额:根据《关于工资总额组成的规定》(详见官网http://www.stats.gov.cn/zjtj/tjfg/xzfg/200207/t20020702_36026.html), 工资总额是本单位在报告期内(季度或年度)直接支付给本单位人员的劳动报酬总额。包括计时工资、计件工资、*金、津贴和补贴、加班加点工资、特殊情况下支付的工资。   工资总额是税前工资,包括单位从个人工资中直接为其代扣或代缴的个人所得税、社会保险基金和住房公积金等个人缴纳部分,以及房费、水电费。   工资总额不论是计入成本的还是不计入成本的,不论是以货币形式支付的还是以实物形式支付的,均应列入工资总额的计算范围。   (3)平均工资:是指在报告期内单位发放工资的人均水平。计算公式为:   2.统计范围   城镇地区私营法人单位和统计上认定的视同法人单位的产业活动单位,具体包括私营有限责任公司、私营股份有限公司、私营合伙企业和私营独资企业。   工资统计主要统计法人单位的就业人员,而个体就业人员、自由职业者等非单位就业人员不在工资统计范围内。   3.调查方法   根据国家统计局制定的《企业一套表统计调查制度》和《劳动工资统计调查制度》,对一套表法人单位采用全面调查的方法,对非一套表法人单位采用抽样调查的方法。   4.东中西部和东北地区划分方法   东部包括:北京、天津、河北、上海、江苏、浙江、福建、山东、广东和海南。   中部包括:山西、安徽、江西、河南、湖北和湖南。   西部包括:内蒙古、广西、重庆、四川、贵州、云南、西藏、陕西、甘肃、青海、宁夏和新疆。   东北包括:辽宁、吉林和黑龙江。   5.行业分类标准   工资统计的行业分类标准按照《国民经济行业分类》(GB/T4754-2017)执行。   6.上年基期数据以正式出版的《中国统计年鉴-2020》为准。

2020年规模以上企业分岗位就业人员年平均工资情况

  2020年全国规模以上企业就业人员年平均工资为79854元,比上年增长[1]6.1%。其中,中层及以上管理人员164979元,增长5.2%;专业技术人员112576元,增长6.4%;办事人员和有关人员75167元,增长6.0%;社会生产服务和生活服务人员61938元,增长3.2%;生产制造及有关人员62610元,增长5.1%。中层及以上管理人员平均工资*高,是全部就业人员平均水平的2.07倍;社会生产服务和生活服务人员平均工资*低,是全部就业人员平均水平的78%。岗位平均工资*高与*低之比为2.66,比上年扩大0.03。   分四大区域看,五类岗位平均工资*高的区域均为东部,平均工资分别为中层及以上管理人员191577 元、专业技术人员129052元、办事人员和有关人员84787元、社会生产服务和生活服务人员67652元、生产制造及有关人员65241元。五类岗位平均工资*低的区域均为中部,分别为117426元、81705元、58276元、50873元和56302元。 表1 2020年分地区分岗位就业人员年平均工资                                              单位:元 地 区 规模以上企业就业人员 中层及以上管理人员 专业技术 人员 办事人员和有关人员 社会生产服务和生活服务人员 生产制造及有关人员 合 计 79854 164979 112576 75167 61938 62610 东部地区 88284 191577 129052 84787 67652 65241 中部地区 64210 117426 81705 58276 50873 56302 西部地区 72086 137805 94913 64525 55665 62250 东北地区 70272 134181 83374 68387 54769 61305    分行业门类看,中层及以上管理人员、专业技术人员、办事人员和有关人员、社会生产服务和生活服务人员四类岗位平均工资*高的行业均为信息传输、软件和信息技术服务业,平均工资分别为338908元、199228元、123557元、121406元;生产制造及有关人员平均工资*高的行业是电力、热力、燃气及水生产和供应业,平均工资为109193元;中层及以上管理人员、专业技术人员、办事人员和有关人员、生产制造及有关人员四类岗位平均工资*低的行业均为住宿和餐饮业,平均工资分别为93164元、55828元、46096元、39623元;社会生产服务和生活服务人员平均工资*低的行业是水利、环境和公共设施管理业,平均工资为34914元。 表2 2020年分行业分岗位就业人员年平均工资                                              单位:元 行 业 规模以上企业就业人员 中层及以上管理人员 专业技术 人员 办事人员和有关人员 社会生产服务和生活服务人员 生产制造及有关人员 合计 79854 164979 112576 75167 61938 62610 采矿业 90899 173536 114475 98177 61109 82210 制造业 74641 152996 106681 78229 76036 61324 电力、热力、燃气及水生产和供应业 120273 205675 138741 96860 91310 109193 建筑业 64243 115687 76892 55152 52647 57805 批发和零售业 84254 166785 106225 76383 60677 57769 交通运输、仓储和邮政业 94192 181105 136132 80841 87085 79684 住宿和餐饮业 46825 93164 55828 46096 39786 39623 信息传输、软件和信息技术服务业 175258 338908 199228 123557 121406 81416 房地产业 80523 172417 101993 71569 51431 53690 租赁和商务服务业 80352 252730 131166 78999 53280 59554 科学研究和技术服务业 141864 272189 145663 93488 80024 82126 水利、环境和公共设施管理业 51053 147273 97779 64891 34914 56385 居民服务、修理和其他服务业 51827 111166 73043 62520 42747 50441 教育 90487 172895 91668 80185 75358 56841 卫生和社会工作 88203 153451 89521 65294 56529 61770 文化、体育和娱乐业 107174 192916 157694 86565 54519 54120    分登记注册类型看,中层及以上管理人员、办事人员和有关人员、社会生产服务和生活服务人员三类岗位平均工资*高的企业类型均为外商投资企业,平均工资分别为329642元、122663元、85165元;专业技术人员平均工资*高的是港澳台商投资企业,平均工资为174155元;生产制造及有关人员平均工资*高的是国有企业,平均工资为81424元;中层及以上管理人员、专业技术人员、办事人员和有关人员、社会生产服务和生活服务人员、生产制造及有关人员五类岗位平均工资*低的企业类型均为集体企业,平均工资分别为104404元、63604元、52311元、46303元和48220元。五类岗位平均工资在各类企业类型中*高与*低之比分别为3.16、2.74、2.34、1.84以及1.69。 表3 2020年分登记注册类型分岗位就业人员年平均工资                                              单位:元 登记注册类型 规模以上企业就业人员 中层及以上管理人员 专业技术 人员 办事人员和有关人员 社会生产服务和生活服务人员 生产制造及有关人员 合 计 79854 164979 112576 75167 61938 62610 国 有 97739 195147 125796 87319 72818 81424 集 体 54061 104404 63604 52311 46303 48220 有限责任公司 84780 178070 118483 75699 65224 67097 股份有限公司 97324 220942 130603 90237 75683 74064 私 营 63309 114189 82179 59666 48275 54674 港澳台商投资 98765 253516 174155 108406 82467 63963 外商投资 112290 329642 171742 122663 85165 73293 其 他 73459 130831 84270 64751 55059 54167    注[1]:文中以下增长,除特别指出外,均为名义增长。   附注   1.主要指标解释   中层及以上管理人员:指在单位及其职能部门中担任领导职务并具有决策、管理权的人员。包括单位主要负责人或高级管理人员(包含同级别及副职)、单位内的一级部门或内设机构的负责人(包含同级别及副职),特大型单位可以包括一级部门内设的管理机构的负责人(包含副职)。根据人力资源和社会保障部《中华人民共和国职业分类大典(2015年版)》修订,下同。   专业技术人员:指专门从事各种科学研究和专业技术工作的人员。从事本类职业工作的人员,一般都要求接受过系统的专业教育,具备相应的专业理论知识,并且按规定的标准条件评聘专业技术职务,以及未聘任专业技术职务,但在专业技术岗位上工作的人员。具体包括科学研究人员,工程技术人员,农业技术人员,飞机和船舶技术人员,卫生专业技术人员,经济和金融专业人员,法律、社会和宗教专业人员,教学人员,文学艺术、体育专业人员,新闻出版、文化专业人员,其他专业技术人员。   办事人员和有关人员:指在国家机关、党群组织、企业、事业单位中从事行政业务、行政事务、行政执法、安全保卫和消防等工作的人员。具体包括办事人员、安全和消防人员、其他办事人员和有关人员。   社会生产服务和生活服务人员:指从事商品批发零售,交通运输、仓储、邮政和快递,信息传输、软件和信息技术,住宿和餐饮,金融,租赁和商务,生态保护,文化、体育和娱乐等社会生产服务与生活服务工作的人员。具体包括批发与零售服务人员,交通运输、仓储和邮政业服务人员,住宿和餐饮服务人员,信息传输、软件和信息技术服务人员,金融服务人员,房地产服务人员,租赁和商务服务人员,技术辅助服务人员,水利、环境和公共设施管理服务人员,居民服务人员,电力、燃气及水供应服务人员,修理及制作服务人员,文化、体育和娱乐服务人员,健康服务人员,其他社会生产和生活服务人员。   生产制造及有关人员:指从事矿产开采、产品生产制造、工程施工和运输设备操作的人员及有关人员。具体包括农副食品加工人员,食品、饮料生产加工人员,烟草及其制品加工人员,纺织、针织、印染人员,纺织品、服装和皮革、毛皮制品加工制作人员,木材加工、家具与木制品制作人员,纸及纸制品生产加工人员,印刷和记录媒介复制人员,文教、工美、体育和娱乐用品制造人员,石油加工和炼焦、煤化工生产人员,化学原料和化学制品制造人员,医药制造人员,化学纤维制造人员,橡胶和塑料制品制造人员,非金属矿物制品制造人员,采矿人员,金属冶炼和压延加工人员,机械制造基础加工人员,金属制品制造人员,通用设备制造人员,专用设备制造人员,汽车制造人员,铁路、船舶、航空航天设备制造人员,电气机械和器材制造人员,计算机、通信和其他电子设备制造人员,仪器仪表制造人员,废弃资源综合利用人员,电力、热力、气体、水生产和输配人员,建筑施工人员,运输设备和通用工程机械操作人员及有关人员,生产辅助人员,其他生产制造及有关人员。   2.统计范围   规模以上企业具体包括:规模以上工业(含采矿业,制造业,电力、热力、燃气及水生产和供应业),有资质的建筑业,限额以上批发和零售业,限额以上住宿和餐饮业,有开发经营活动的全部房地产开发经营业,规模以上服务业(含交通运输、仓储和邮政业,信息传输、软件和信息技术服务业,租赁和商务服务业,科学研究和技术服务业,水利、环境和公共设施管理业,居民服务、修理和其他服务业,教育,卫生和社会工作,文化、体育和娱乐业,以及物业管理、房地产中介服务等行业)共16个行业门类的约113.9万家企业法人单位。   3.调查方法   根据国家统计局制定的《企业一套表统计调查制度》和《劳动工资统计调查制度》,一套表联网直报单位岗位工资统计采用全面调查的方法。   4.东中西部和东北地区划分方法   东部包括:北京、天津、河北、上海、江苏、浙江、福建、山东、广东和海南。   中部包括:山西、安徽、江西、河南、湖北和湖南。   西部包括:内蒙古、广西、重庆、四川、贵州、云南、西藏、陕西、甘肃、青海、宁夏和新疆。   东北包括:辽宁、吉林和黑龙江。   5.行业分类标准   工资统计的行业分类标准按照《国民经济行业分类》(GB/T4754-2017)执行。   6.登记注册类型   其他包括:股份合作、联营、其他内资。 

国家统计局人口和就业统计司副司长孟灿文解读2020年城镇单位就业人员平均工资数据

2020年城镇单位就业人员平均工资继续保持增长 ——国家统计局人口和就业统计司副司长孟灿文解读2020年城镇单位就业人员平均工资数据   2020年,面对新冠肺炎疫情、世界经济深度衰退等多重严重冲击,各地区、各部门贯彻落实党中央、国务院决策部署,统筹推进疫情防控和经济社会发展,扎实做好“六稳”工作,全面落实“六保”任务,有序推进复工复产,经济增长由负转正并逐季加快,保障了全国城镇单位就业人员平均工资稳步增长。   一、平均工资保持增长,增速回落至多年较低水平   2020年全国城镇非私营单位就业人员年平均工资为97379元,比上年增长7.6%,增速比上年回落2.2个百分点,扣除价格因素实际增长5.2%;城镇私营单位就业人员年平均工资为57727元,比上年增长7.7%,增速比上年回落0.4个百分点,扣除价格因素实际增长5.3%。城镇非私营单位就业人员平均工资增速为1984年以来*低点,城镇私营单位就业人员平均工资增速回落至2009年有统计以来的第二低点。   在疫情冲击下,城镇单位就业人员年平均工资仍然保持增长,反映出党中央、国务院统筹疫情防控和经济社会发展取得巨大成效。   二、城镇非私营单位中平均工资增速较快的主要是技术含量较高的行业   从城镇非私营单位看,在统计的19个行业门类中,除住宿和餐饮业外,其余行业就业人员平均工资均有不同程度增长。其中,农、林、牧、渔业,公共管理、社会保障和社会组织,信息传输、软件和信息技术服务业平均工资增速均超过10%。在疫情影响下,在线办公、在线教育和远程问诊等新消费需求持续旺盛,带动互联网和相关服务行业平均工资快速增长,2020年信息传输、软件和信息技术服务业平均工资增长10.0%,比上年加快0.7个百分点。疫情防控相关的机关事业单位加大防控工作力度,发放抗疫补贴,带动公共管理、社会保障和社会组织平均工资快速增长。受2020年农产品价格上涨特别是生猪价格大幅上涨,加之受部分地区对就业人员结构调整的影响,农、林、牧、渔业平均工资增速较高。   高技术制造业和装备制造业发展较好,企业效益增加,相关行业就业人员平均工资较快增长。2020年,医药制造业、专用设备制造业、仪器仪表制造业平均工资分别增长6.9%、8.2%和7.0%,分别高于制造业平均增速1.0、2.3和1.1个百分点。   交通运输、餐饮、住宿、旅游等服务行业受疫情影响较大,平均工资增速回落幅度较大。2020年,交通运输、仓储和邮政业平均工资增长3.7%,增幅比上年回落6.0个百分点;文化、体育和娱乐业平均工资增长4.1%,回落5.1个百分点。住宿和餐饮业平均工资下降3.0%,上年为增长4.3%。   三、城镇私营单位多数行业平均工资保持增长   从城镇私营单位来看,大多是中小企业,受疫情冲击较大。但由于党中央、国务院出台一系列政策措施加大对中小微企业的支持,通过阶段性大规模减税降费、增加定向贷款并降低利率水平、延期还本付息、发放稳岗返还资金、发放就业补贴、减免社保费用等助力中小微企业纾困发展,有效对冲了疫情影响,保障了城镇私营单位平均工资的稳定增长。   在统计的18个行业门类中,除住宿和餐饮业,水利、环境和公共设施管理业,教育等3个行业平均工资下降外,其余行业均实现增长。2020年,信息传输、软件和信息技术服务业平均工资增速*高,达18.7%。而教育行业平均工资下降4.6%,是由于私营教育行业多为各类校外培训机构,受疫情影响,长期停课导致单位收入下降。   四、影响平均工资变化的因素是多方面的,应理性看待   城镇单位就业人员平均工资变化受到多重因素影响,包括经济效益、宏观政策、人员结构变动等。去年疫情爆发后,党中央、国务院统筹疫情防控和经济社会发展,出台了一系列减税降费、援企稳岗的措施,在推动经济稳定恢复的同时,有效降低了企业的经营成本,促进了企业效益提高,为工资增长创造了条件。同时,部分领域平均工资变动也受到人员结构变动影响,如非私营单位中农、林、牧、渔业工资水平增速较高,就与农垦单位机构改革所致的人员结构调整的因素有关。   此外,城镇单位就业人员平均工资是针对法人单位统计的,不包括个体工商户和自由职业者,反映的是税前工资,包括单位从个人工资中代扣代缴的个人所得税、社会保险基金和住房公积金等个人缴纳部分。因此,公布的平均工资比个人实际拿到的工资要高。同时,由于各单位所处行业、所在地区和经济效益不同,以及个人所属的岗位不同,工资水平有高有低。实际上,工资一般呈现正偏态分布,平均值往往高于一般水平,即大多数个体数据低于平均值。因此,要更加准确地了解工资差距及变动情况,不仅要看总体平均数据,还要结合更详细的分地区、分行业、分岗位工资数据进行具体分析。   同时,也要看到工资增长刚性的特征。在面临新冠肺炎疫情的严重冲击下,国外一些国家的工资水平也保持不慢的增速。根据国际劳工组织数据显示,2020年,美国平均工资比上年增长6.4%,巴西平均工资增长8.1%。 

安卓8.0系统下载-安卓8.0系统刷机包下载

关于8.0的一个一个apk的下载更新,由于做的软件是内部用的,所以之前8.0的还是很少,一直也不知道会出现问题。但是后来领导突然提出来了,所以就更新了一下。
其实8.0和7.0相比其实就一个权限的添加。
<uses-permission android:name=”android.permission.REQUEST_INSTALL_PACKAGES” />
下面完整下载代码

在res下的xml创建名字为provider_paths的文件

 

<?xml version=”1.0″ encoding=”utf-8″?>
<paths
<external-path

path=”.” name=”files_path” />
</paths>

在application下创建provider

 

<provider
android:name=”android.support.v4.content.FileProvider”
android:authorities=”${applicationId}.provider”
android:exported=”false”
android:grantUriPermissions=”true”>
<meta-data
android:name=”android.support.FILE_PROVIDER_PATHS”
android:resource=”@xml/provider_paths” />
</provider>
java代码

拿取当前版本和服务器返回的版本想对比,如果低于服务器就开始下载

以下是在fragment中做的下载动作。

 

在buide.gradle中添加依赖,也就是下面动态申请权限的一个依赖

compile ‘com.tbruyelle.rxpermissions:rxpermissions:0.7.0@aar’

compile ‘io.reactivex:rxjava:1.1.6’ //需要引入RxJava

//动态申请权限
private void quanxian(){
RxPermissions.getInstance(getActivity())
// 申请权限
.request(Manifest.permission.WRITE_EXTERNAL_STORAGE)
.subscribe(new Action1<Boolean>() {
@Override
public void call(Boolean granted) {
if(granted){
//请求成功
showNoticeDialog();

}else{
// 请求失败回收当前服务

}
}
});

}

//更新当前app版本
private void showNoticeDialog() {
// 更新
AlertDialog.Builder dialog = new AlertDialog.Builder(getActivity());

dialog.setTitle(“检测到新版本,立即更新吗”)
.setMessage(“检测到新版本,立即更新吗”).setMessage(“更新内容:\n”)//更新内容根据拿取版本时候服务器返回的进行书写
.setPositiveButton(“更新”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
Toast.makeText(getActivity(), “正在通知栏下载中”, Toast.LENGTH_SHORT).show();

// 显示下载对话框
showDownloadDialog();
}
});

dialog.setNegativeButton(“下次再说”, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});

dialog.setCancelable(false);
dialog.show();
}

/**
* 显示软件下载对话框
*/
private void showDownloadDialog() {

String downPath = http://xiaz.apk;//下载路径 根据服务器返回的apk存放路径
//使用系统下载类
mDownloadManager = (DownloadManager) getActivity().getSystemService(DOWNLOAD_SERVICE);
Uri uri = Uri.parse(downPath);
DownloadManager.Request request = new DownloadManager.Request(uri);
request.setAllowedOverRoaming(false);

//创建目录下载
request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, “下载.apk”);
// 把id保存好,在接收者里面要用
downloadId = mDownloadManager.enqueue(request);
//设置允许使用的网络类型,这里是移动网络和wifi都可以
request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_MOBILE | DownloadManager.Request.NETWORK_WIFI);
//机型适配
request.setMimeType(“application/vnd.android.package-archive”);
//通知栏显示
request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
request.setTitle(“下载”);
request.setDescription(“正在下载中…”);
request.setVisibleInDownloadsUi(true);
getActivity().registerReceiver(mReceiver, new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));
}

private BroadcastReceiver mReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
checkStatus();
}
};

/**
* 检查下载状态
*/
private void checkStatus() {
DownloadManager.Query query = new DownloadManager.Query();
query.setFilterById(downloadId);
Cursor cursor = mDownloadManager.query(query);
if (cursor.moveToFirst()) {
int status = cursor.getInt(cursor.getColumnIndex(DownloadManager.COLUMN_STATUS));
switch (status) {
//下载暂停
case DownloadManager.STATUS_PAUSED:
break;
//下载延迟
case DownloadManager.STATUS_PENDING:
break;
//正在下载
case DownloadManager.STATUS_RUNNING:
break;
//下载完成
case DownloadManager.STATUS_SUCCESSFUL:
installAPK();
break;
//下载失败
case DownloadManager.STATUS_FAILED:
Toast.makeText(getActivity(), “下载失败”, Toast.LENGTH_SHORT).show();
break;
}
}
cursor.close();
}

/**
* 7.0兼容
*/
private void installAPK() {
File apkFile =
new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS), “下载.apk”);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
Uri apkUri = FileProvider.getUriForFile(getActivity(), getActivity().getPackageName() + “.provider”, apkFile);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.setDataAndType(apkUri, “application/vnd.android.package-archive”);
} else {
intent.setDataAndType(Uri.fromFile(apkFile), “application/vnd.android.package-archive”);
}
getActivity().startActivity(intent);
}

 

安卓毕业设计-图书馆管理系统-新手练手项目

图书馆管理系统
目的:1,用于毕业设计

2,用于用于新手的练手项目

开发环境:win7,android studio3.0.1,模拟器api:7.0.1

开发语言:Java

代码量:Java代码5000行左右,

涉及到知识点:

1,activity,DrawerLayout(抽屉布局),CardView,

2,安卓本地数据库

3,自定义view

4,RecyclerView

5,MVP开发模式,实际中,M层的数据处理我放到了P层,简单的从数据库拿数据,就没有单独写一个M类出来了

6,Material Design

实现的功能:

1,用户登录注册;———访问数据库验证登录,插入数据库实现用户注册

2,浏览全部书籍;———用RecyclerView展示

3,查看书籍详情;———书籍的名称,出版社,浏览量,藏书量等

4,借书还书;      ———-借书后,book表藏书量-1,还书后,book表中藏书量+1

5,浏览自己所有借书;—–用RecyclerView展示

6,用户修改自己信息;—–sql的update语句实现

7,增删改书籍;    ———管理员拥有的功能

8,管理员修改普通用户信息;

9,外借书籍详细信息——-管理员可查看外借书的详细,包括时间,人物,书籍名称

10,软件的所有操作记录;–管理员可查看所有操作:登录,注册,借书,换书,修改个人信息,浏览书籍等记录

数据库:四个表:book:所有图书表

user:用户表,管理员,普通用户通过level来划分

outbook:外借图书表

operation_record:左右操作记录表

 

效果图:
%title插图%num

%title插图%num

%title插图%num

华为云空间满了怎么清理_手机云空间满了怎么办?

随着云计算的普及,手机的数据备份也应用上了云空间,但基于手机用户基数较大的原因,品牌商提供给用户的免费云空间较小,使用这类手机时经常会出现“云空间已满”的提示,本期文章就教大家如何处理这种情况。

%title插图%num
一、购买云空间
以华为手机为例,官方提供的云空间只有5G大小,使用一段时间后就会被备份数据占满。但这个空间是可以花钱购买的,只要我们进入云空间APP,然后选择付费购买云空间容量。可以按照自己需求的容量大小来进行购买,当云空间的容量足够大时,就不存在“被占满”的情况了。

%title插图%num
二、清理云空间
云空间中存储的数据是我们使用手机保存的备份数据,该数据并不是真的存在手机设备内,而是通过网络上传到云服务器内,而这个云空间实际上就是手机运营商通过云服务器分配给用户的免费空间。之所以有云空间的存在,就是怕用户手机丢失之后损失一些重要数据,对于普通人来说,实用性较差,当云空间被占满以后,完全是可以直接清空云空间数据的,这样就可以解决此问题。

%title插图%num
三、关闭云空间备份功能
其实这个功能有些鸡肋,大多数普通用户虽然会在手机里存储一些看似很重要的东西,但实际上也没有那么重要,此时使用云空间就会经常收到“云空间已满”的提示。所以,对于这种鸡肋功能,如果不想要使用它,完全是可以将其关闭掉的。

当我们将云空间的备份功能关闭后,云空间就不会再次上传手机备份数据,也就不会再出现这种提示了。

题外话:如果是商务人士,且在手机里储存一些重要的数据,那么*好还是开启,不过免费的云空间容量较小,*好是付费扩充一下。但如果是普通用户的话,就直接关闭即可,这个功能是把手机备份的一些数据上传到官方的云服务器上保存,是个鸡肋功能,大多数用户都不知道这东西是干什么。

华为删除云空间备份_小心!停用云空间导致通讯录资料消失?教你一招解决…

去年底入手了一部华为MATE30,在不经意之间发现,手机备份信息都自动存储进华为云空间。当时并未做理会。

但是当经常提示云空间存储不足,需要收费的时候。才发现这个空间的收费项目,按照其标准,还价格不菲,因为是终生收费,除非你不要空间里的信息了。

当时也是出于感觉到不合理,物美价不廉的想法,直接选择停用,结果这一下子出了大问题。

%title插图%num
随着云空间停用,所有的通讯录名单都被删除了,看着通讯录里仅剩的几个人名,我真是欲哭无泪。

后来几经辗转,找到客服,告诉我把云空间恢复使用,这才又找回来一部分通讯录的通讯信息。但还是有一部分重要客户的信息丢失了。

问题产生了!为什么停用华为云空间会导致我手机通讯录受损?经常出现提示云存储空间不足咋回事嘞?

然后痛定思痛,我对华为云空间功能进行了一次深入骨髓的学习,终于发觉华为现在免费的空间只剩下了5G,但备份的时候默许手机里的照片,大文件,视频等等都是自动备份。如此一来这点空间肯定不够用,然后就出现了不断提示空间不足的情况。

我当时不堪其扰,下了黑手,直接停用了云空间,而官方的设置更不客气,将我所有保存的资料全部删除,甚至包括现有手机的通讯录。

别的不知道,至少这款手机的通讯录是属于云空间里的应用,不仅仅是存储信息那么简单,也就是说,你停用了云空间,通讯录的功能就直接受到影响。因为华为手机里很多重要功能,包括通讯录功能,都属于关联华为云空间的应用。你不充值还好,但是要停用,嘿嘿,几乎所有的联系人都给你删除掉!这招儿不得不说太狠了!

为了销售自己的云空间,华为也很拼,试问在这种情况下,很多人是不是不得已之间会选择购买呢?今天就顺便告诉朋友一个规避的方法。

经过一番猛如虎的操作,告诉大家一个方法:华为云空间不要自动备份视频,照片,文件的信息,这些信息大可以用其他的方式,分散存储。例如存储到移动硬盘里,有条件的也可以购买家用的云存储。价格也不贵。

华为手机里的云空间干啥用呢?我只选择了四项需要使用华为云空间的应用:联系人,日历,备忘录,WLAN.关掉了图库,浏览器这两用关联应用!至于为啥这么选?三点:常用,重要,占用空间小!同时超耗资源的图库不再自动上传备份文件!

%title插图%num
这样就可以了吗,不可以!还有个重要的甚至,点开云备份,选择备份选项还要取消音乐,图库等等这些不重要的设置,以免他们偷偷的来占用你的空间。

%title插图%num
于是令人讨厌的提示云存储不足消失了,再也无需担心重要联系人丢失!就算是手机使用时间终结,免费的空间也足够我们存储通讯录以及生活信息。

友情链接: SITEMAP | 旋风加速器官网 | 旋风软件中心 | textarea | 黑洞加速器 | jiaohess | 老王加速器 | 烧饼哥加速器 | 小蓝鸟 | tiktok加速器 | 旋风加速度器 | 旋风加速 | quickq加速器 | 飞驰加速器 | 飞鸟加速器 | 狗急加速器 | hammer加速器 | trafficace | 原子加速器 | 葫芦加速器 | 麦旋风 | 油管加速器 | anycastly | INS加速器 | INS加速器免费版 | 免费vqn加速外网 | 旋风加速器 | 快橙加速器 | 啊哈加速器 | 迷雾通 | 优途加速器 | 海外播 | 坚果加速器 | 海外vqn加速 | 蘑菇加速器 | 毛豆加速器 | 接码平台 | 接码S | 西柚加速器 | 快柠檬加速器 | 黑洞加速 | falemon | 快橙加速器 | anycast加速器 | ibaidu | moneytreeblog | 坚果加速器 | 派币加速器 | 飞鸟加速器 | 毛豆APP | PIKPAK | 安卓vqn免费 | 一元机场加速器 | 一元机场 | 老王加速器 | 黑洞加速器 | 白石山 | 小牛加速器 | 黑洞加速 | 迷雾通官网 | 迷雾通 | 迷雾通加速器 | 十大免费加速神器 | 猎豹加速器 | 蚂蚁加速器 | 坚果加速器 | 黑洞加速 | 银河加速器 | 猎豹加速器 | 海鸥加速器 | 芒果加速器 | 小牛加速器 | 极光加速器 | 黑洞加速 | movabletype中文网 | 猎豹加速器官网 | 烧饼哥加速器官网 | 旋风加速器度器 | 哔咔漫画 | PicACG | 雷霆加速