Android安全卫士-检测升级(一)
16lz
2021-01-24
欢迎界面做完了接下来就进行检测升级这部分的内容
设置APK包的相关属性
在Gradle Scripts->build.gradle(Module: app)
apply plugin: 'com.android.application'//说明module的类型,com.android.application为应用程序,com.android.library为库android { compileSdkVersion 26 //编译的SDK版本。编译该app时候,你想使用到的api版本。 buildToolsVersion "26.0.1" //构建工具的版本号。 defaultConfig { //defaultConfig方法包含了该app的核心属性,该属性会重写在AndroidManifest.xml中的对应属性。 applicationId "com.lt.android.securityguards" //应用程序的包名 minSdkVersion 19 //支持的最低版本 targetSdkVersion 26 //支持的目标版本 versionCode 1 //版本号 versionName "1.0" //版本名 testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" //AndroidJUnitRunner类是一个JUnit测试运行器,允许运行JUnit 3或JUnit 4测试类在Android设备上,包括那些使用Espresso和UI Automator框架。 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } packagingOptions{ //设置APK包的相关属性 exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude 'META-INF/LGPL2.1' }}dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' }) compile 'com.android.support:appcompat-v7:26.+' compile 'com.android.support.constraint:constraint-layout:1.0.2' testCompile 'junit:junit:4.12'}
我们此处主要是添加packagingOptions部分的代码,在修改完build.gradle文件后会有如下提示,须点击Sync Now才可运行程序
修改build.gradle文件后会提示这一段主要为后面导包做铺垫,不加上这一段就会出错
新建目录与文件
先新建所需目录与文件,右键->New->
新建子包先新建m1home目录,然后在其目录下新建entity和utils目录,在utils目录下新建名为DownloadUtils、VersionUtils和MyUtils的Java Class,在entity目录下新建VersionEntity
如果你之前将项目传到Github仓库过,那么新建文件后会提示
GitHub此时若点击No则此文件不会上传到github,且文件名颜色为暗红色,若点击Yes则文件名为绿色,文件名为蓝色则表示修改过此文件
导入第三方jar包
将目录显示模式从Android改为Project
libs目录然后将下载好的第三方jar包粘贴到app/libs下
接着点击菜单栏的Build->Edit Libraries Dependencies
Edit Libraries Dependencies Project Structure点击下方的 + -> Jar dependency,将刚刚导入的三个包逐个加入,接着目录就会如下显示
libs目录增加权限
打开AndroidManifest.xml清单文件增加此应用的权限
<?xml version="1.0" encoding="utf-8"?>
下载工具类
- DownloadUtils
package com.lt.android.securityguards.m1home.utils;import android.app.DownloadManager;import android.content.Context;import android.net.Uri;import android.webkit.MimeTypeMap;/** * Created by lt on 2017/10/20. */public class DownloadUtils { public void downloadApk(String url,String targetFile, Context context){ DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); request.setAllowedOverRoaming(false); MimeTypeMap mimeTypeMap = MimeTypeMap.getSingleton(); String mimeString = mimeTypeMap.getMimeTypeFromExtension(mimeTypeMap.getFileExtensionFromUrl(url)); request.setMimeType(mimeString); request.setDestinationInExternalPublicDir("/download",targetFile); request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE); request.setVisibleInDownloadsUi(true); DownloadManager downloadManager = (DownloadManager) context.getSystemService(Context.DOWNLOAD_SERVICE); long mTaskid = downloadManager.enqueue(request); }}
检测本地版本号
- MyUtils
package com.lt.android.securityguards.m1home.utils;import android.content.Context;import android.content.pm.PackageInfo;import android.content.pm.PackageManager;/** * Created by lt on 2017/10/20. */public class MyUtils { public static String getVersion(Context context){ //PackageManager可以获取清单文件中的所有信息 PackageManager packageManager = context.getPackageManager(); try{ //getPackageInfo获取当前程序的包名 PackageInfo packageInfo = packageManager.getPackageInfo(context.getPackageName(),0); return packageInfo.versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); return ""; } }}
版本信息实体类
- VersionEntity
package com.lt.android.securityguards.m1home.entity;/** * Created by lt on 2017/10/20. */public class VersionEntity { /**服务器版本号*/ public String versionCode; /**版本描述*/ public String description; /**apk下载地址*/ public String apklurl;}
版本更新工具类
- VersionUpdateUtils
package com.lt.android.securityguards.m1home.utils;import android.app.Activity;import com.lt.android.securityguards.m1home.entity.VersionEntity;import org.apache.http.HttpEntity;import org.apache.http.HttpResponse;import org.apache.http.client.HttpClient;import org.apache.http.client.methods.HttpGet;import org.apache.http.impl.client.DefaultHttpClient;import org.apache.http.params.HttpConnectionParams;import org.apache.http.util.EntityUtils;import org.json.JSONException;import org.json.JSONObject;import java.io.IOException;/** * Created by lt on 2017/10/20. */public class VersionUpdateUtils { //本地版本号 private String mVersion; private Activity context; private VersionEntity versionEntity; public VersionUpdateUtils(String mVersion, Activity context) { this.mVersion = mVersion; this.context = context; } //获取服务器版本号 public void getCloudVersion() { try { HttpClient httpClient = new DefaultHttpClient(); //连接超时 HttpConnectionParams.setConnectionTimeout(httpClient.getParams(), 5000); //请求超时 HttpConnectionParams.setSoTimeout(httpClient.getParams(), 5000); HttpGet httpGet = new HttpGet("http://android2017.duapp.com/updateinfo.html"); HttpResponse excute = httpClient.execute(httpGet); if (excute.getStatusLine().getStatusCode() == 200) { //请求和响应都成功了 HttpEntity entity = excute.getEntity(); String result = EntityUtils.toString(entity, "utf-8"); //创建jsonObject对象 JSONObject jsonObject = new JSONObject(result); versionEntity = new VersionEntity(); versionEntity.versionCode = jsonObject.getString("code"); versionEntity.description = jsonObject.getString("des"); versionEntity.apklurl = jsonObject.getString("apkurl"); if (!mVersion.equals(versionEntity.versionCode)) { //版本不同需升级 System.out.println(versionEntity.description); DownloadUtils downloadUtils = new DownloadUtils(); downloadUtils.downloadApk(versionEntity.apklurl, "mobileguard.apk", context); } } } catch (IOException e) { e.printStackTrace(); } catch (JSONException e) { e.printStackTrace(); } }}
欢迎界面逻辑
- SplashActivity
package com.lt.android.securityguards;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.TextView;import com.lt.android.securityguards.m1home.utils.MyUtils;import com.lt.android.securityguards.m1home.utils.VersionUpdateUtils;public class SplashActivity extends AppCompatActivity { private TextView mTvVersion; private String mVersion; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_splash); mVersion = MyUtils.getVersion(getApplicationContext()); mTvVersion = (TextView) findViewById(R.id.tv_splash_version); mTvVersion.setText("版本号:"+mVersion); final VersionUpdateUtils versionUpdateUntils = new VersionUpdateUtils(mVersion,SplashActivity.this); new Thread(){ @Override public void run() { super.run(); versionUpdateUntils.getCloudVersion(); } }.start(); }}
微调欢迎界面
- activity_splash.xml
<?xml version="1.0" encoding="utf-8"?>
更多相关文章
- android adt 最新下载地址23.03
- Android(安卓)当媒体变更后,通知其他应用重新扫描
- Android下使用GDB调试无符号ELF文件
- Android(安卓)Studio 配置应用自动签名
- Didn't find class "androidx.core.content.FileProvider" on pa
- Android开发平台搭建(Android(安卓)Studio)
- mk文件中配置lib arm64 文件夹
- Android____View-->Bitmap
- Android(安卓)库文件的编译(静态和动态库 Android.mk)