我使用 Android Studio 创建了一个 android 应用程序,它尝试检查应用程序使用的文件是否有更新版本,该文件存储在资产目录中。我已检查该文件是否可用且可访问,但由于我无法共享文件位置,因此我将在此示例中使用以下文本文件:http : //www.w3.org/TR/PNG/iso_8859-1。文本文件
我一直牢记在我的代码中包含以下内容:
1- 在 manifest.xml 文件中添加使用权限,如下所示:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
2- 创建 AsyncTask 以在后台执行文件读取:
import android.content.Context;
import android.os.AsyncTask;
import android.util.Log;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
public class CheckUpdate extends AsyncTask<Void,Void,Boolean>
{
String filename = "http://www.w3.org/TR/PNG/iso_8859-1.txt";
private Context ctx;
public CheckUpdate(Context myContext) {
this.ctx = myContext;
doInBackground();
}
@Override
protected Boolean doInBackground(Void... voids) {
try {
URL url = new URL(filename);
File LocalFile = new File("file:///android_asset/test.txt");
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setReadTimeout(5000);
ucon.setConnectTimeout(10000);
ucon.setDoInput(true);
ucon.setDoOutput(true);
ucon.connect();
if (ucon.getResponseCode() == 200) {
InputStream isURL = ucon.getInputStream();
BufferedInputStream inStream = new BufferedInputStream(isURL);
long LocalFileModifiedDate = LocalFile.lastModified();
long ExFileModifiedDate = ucon.getLastModified();
if (LocalFile.exists()) {
LocalFile.delete();
}
if (LocalFileModifiedDate < ExFileModifiedDate) {
LocalFile.createNewFile();
FileOutputStream outStream = new FileOutputStream(LocalFile);
byte[] buff = new byte[5 * 1024];
相关分类