您现在的位置是:主页 > news > 网站建设利益分析/如何做好企业推广
网站建设利益分析/如何做好企业推广
admin2025/5/24 16:22:03【news】
简介网站建设利益分析,如何做好企业推广,云南网站建设模块,新型冠状病毒肺炎最新疫情Android 开发中,经常有从服务器下载数据的需求出现,尤其是在线更新App的情形。其基本思路是根据本地的App版本号和服务器的版本号进行比较,如果服务器版本较新,再进行提示然后下载Apk最后进行安装。这种需求解决方案有很多&#x…
网站建设利益分析,如何做好企业推广,云南网站建设模块,新型冠状病毒肺炎最新疫情Android 开发中,经常有从服务器下载数据的需求出现,尤其是在线更新App的情形。其基本思路是根据本地的App版本号和服务器的版本号进行比较,如果服务器版本较新,再进行提示然后下载Apk最后进行安装。这种需求解决方案有很多&#x…
Android 开发中,经常有从服务器下载数据的需求出现,尤其是在线更新App的情形。其基本思路是根据本地的App版本号和服务器的版本号进行比较,如果服务器版本较新,再进行提示然后下载Apk最后进行安装。这种需求解决方案有很多,第三方的网络框架基本都有这个功能。
Android自带的DownloadManager是一个很好的下载文件的工具。该类在API level 9之后出现,它已经帮我们处理了下载失败、重新下载等功能,整个下载过程全部交给系统负责,不需要我们过多的处理,非常的nice。关键的是用起来也很简单,很爽,稍微封装一下就可以几句话搞定下载。
下面以一个简单案例来实现从服务器下载一个Apk文件并进行安装。
1、打开本地Tomcat服务器,放入一个Apk文件

Tomcat.png
2、开启Tomcat,然后确保能从浏览器下载

浏览器下载.png
3、编写DownloadManager工具类,代码注释很详细
public class DownloadUtils {//下载器private DownloadManager downloadManager;//上下文private Context mContext;//下载的IDprivate long downloadId;public DownloadUtils(Context context){this.mContext = context;}//下载apkpublic void downloadAPK(String url, String name) {//创建下载任务Request request = new Request(Uri.parse(url));//移动网络情况下是否允许漫游request.setAllowedOverRoaming(false);//在通知栏中显示,默认就是显示的request.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE);request.setTitle("新版本Apk");request.setDescription("Apk Downloading");request.setVisibleInDownloadsUi(true);//设置下载的路径request.setDestinationInExternalPublicDir(Environment.getExternalStorageDirectory().getAbsolutePath() , name);//获取DownloadManagerdownloadManager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);//将下载请求加入下载队列,加入下载队列后会给该任务返回一个long型的id,通过该id可以取消任务,重启任务、获取下载的文件等等downloadId = downloadManager.enqueue(request);//注册广播接收者,监听下载状态mContext.registerReceiver(receiver,new IntentFilter(DownloadManager.ACTION_DOWNLOAD_COMPLETE));}//广播监听下载的各个状态private BroadcastReceiver receiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {checkStatus();}};//检查下载状态private void checkStatus() {Query query = new Query();//通过下载的id查找query.setFilterById(downloadId);Cursor c = downloadManager.query(query);if (c.moveToFirst()) {int status = c.getInt(c.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://下载完成安装APKinstallAPK();break;//下载失败case DownloadManager.STATUS_FAILED:Toast.makeText(mContext, "下载失败", Toast.LENGTH_SHORT).show();break;}}c.close();}//下载到本地后执行安装private void installAPK() {//获取下载文件的UriUri downloadFileUri = downloadManager.getUriForDownloadedFile(downloadId);if (downloadFileUri != null) {Intent intent= new Intent(Intent.ACTION_VIEW);intent.setDataAndType(downloadFileUri, "application/vnd.android.package-archive");intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);mContext.startActivity(intent);mContext.unregisterReceiver(receiver);}}}
4、编写Activity代码初始化工具类,然后下载
public class MainActivity extends AppCompatActivity {private DownloadUtils downloadUtils;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);downloadUtils = new DownloadUtils(MainActivity.this); downloadUtils.downloadAPK("http://192.168.1.104:8080/XXX.apk", "XXX.apk");}
}
5、配置权限
<!--在SDCard中创建与删除文件权限 -->
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
<!-- 往SDCard写入数据权限 -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- 从SDCard读取数据权限 -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<!-- 访问网络权限 -->
<uses-permission android:name="android.permission.INTERNET"/>
6、运行结果
运行以后会去下载服务器的Apk,通知栏也会有相应的通知。当下载完毕以后,会弹出安装界面。
- 通知栏

通知栏提醒.png
- 主界面

主界面.gif