取消自动更新,增强版本文件格式检查,解决格式错误引起的崩溃

This commit is contained in:
sonichy 2023-04-17 23:20:00 +08:00
parent 6078b278fb
commit 5b1b46cbb2
7 changed files with 64 additions and 27 deletions

BIN
app.apk

Binary file not shown.

View File

@ -2,7 +2,7 @@
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.hty.browser" package="com.hty.browser"
android:versionCode="4" android:versionCode="4"
android:versionName="4.30"> android:versionName="4.31">
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 查询网络状态权限 --> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> <!-- 查询网络状态权限 -->

View File

@ -23,6 +23,7 @@ p { text-indent:2em; }
<p><a href="https://stackoverflow.com/questions/3462582/display-the-android-webviews-favicon" target="_blank">获取网页图标</a></p> <p><a href="https://stackoverflow.com/questions/3462582/display-the-android-webviews-favicon" target="_blank">获取网页图标</a></p>
<p><a href="https://www.jianshu.com/p/c9a18050a249" target="_blank">字符串转Bitmap</a></p> <p><a href="https://www.jianshu.com/p/c9a18050a249" target="_blank">字符串转Bitmap</a></p>
<h3>更新日志:</h3> <h3>更新日志:</h3>
<h3>V4.31 (2023-04-17)</h3><ol><li>取消自动升级,以免因升级错误引起崩溃。</li></ol>
<h3>V4.30 (2023-03-23)</h3><ol><li>收藏夹测试 ExpandableListView 控件</li></ol> <h3>V4.30 (2023-03-23)</h3><ol><li>收藏夹测试 ExpandableListView 控件</li></ol>
<h3>V4.29 (2023-03-01)</h3><ol><li>收藏夹增加分类。</li><li>收藏夹分类的修改和删除。</li><li>修改导出HTML和CSV方法。</li><li>新建收藏和修改收藏编辑框设置最大行数,避免窗口撑大不完整。</li></ol> <h3>V4.29 (2023-03-01)</h3><ol><li>收藏夹增加分类。</li><li>收藏夹分类的修改和删除。</li><li>修改导出HTML和CSV方法。</li><li>新建收藏和修改收藏编辑框设置最大行数,避免窗口撑大不完整。</li></ol>
<h3>V4.28 (2022-11-07)</h3><ol><li>资源探查脚本支持返回多个对象。<br>分类标题增加数量。<br>使用 &lt;details&gt; 代替 &lt;div&gt;,分类可折叠。</li></ol> <h3>V4.28 (2022-11-07)</h3><ol><li>资源探查脚本支持返回多个对象。<br>分类标题增加数量。<br>使用 &lt;details&gt; 代替 &lt;div&gt;,分类可折叠。</li></ol>

View File

@ -62,7 +62,12 @@ public class FavoriteActivity extends Activity {
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
IMM = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); IMM = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE);
imageButton_clear = (ImageButton) findViewById(R.id.imageButton_clear); imageButton_clear = (ImageButton) findViewById(R.id.imageButton_clear);
imageButton_clear.setOnClickListener(new OnClickListener()); imageButton_clear.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
editText.setText("");
}
});
imageButton_clear.setVisibility(View.GONE); imageButton_clear.setVisibility(View.GONE);
editText = (EditText) findViewById(R.id.editText); editText = (EditText) findViewById(R.id.editText);
editText.addTextChangedListener(new EditChangedListener()); editText.addTextChangedListener(new EditChangedListener());
@ -389,17 +394,6 @@ public class FavoriteActivity extends Activity {
return true; return true;
} }
class OnClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.imageButton_clear:
editText.setText("");
break;
}
}
}
class RadioButtonOnClickListener implements View.OnClickListener { class RadioButtonOnClickListener implements View.OnClickListener {
@Override @Override
public void onClick(View v) { public void onClick(View v) {

View File

@ -12,6 +12,8 @@ import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase; import android.database.sqlite.SQLiteDatabase;
import android.net.Uri; import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log; import android.util.Log;
import android.view.ContextMenu; import android.view.ContextMenu;
import android.view.Menu; import android.view.Menu;
@ -20,6 +22,7 @@ import android.view.View;
import android.widget.ArrayAdapter; import android.widget.ArrayAdapter;
import android.widget.EditText; import android.widget.EditText;
import android.widget.ExpandableListView; import android.widget.ExpandableListView;
import android.widget.ImageButton;
import android.widget.ImageView; import android.widget.ImageView;
import android.widget.LinearLayout; import android.widget.LinearLayout;
import android.widget.SimpleCursorTreeAdapter; import android.widget.SimpleCursorTreeAdapter;
@ -36,6 +39,8 @@ import java.lang.reflect.Field;
import java.util.ArrayList; import java.util.ArrayList;
public class FavoriteActivity1 extends Activity { public class FavoriteActivity1 extends Activity {
EditText editText;
ImageButton imageButton_clear;
ExpandableListView expandableListView; ExpandableListView expandableListView;
int position = 0; int position = 0;
@ -43,6 +48,16 @@ public class FavoriteActivity1 extends Activity {
protected void onCreate(Bundle savedInstanceState) { protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState); super.onCreate(savedInstanceState);
setContentView(R.layout.activity_favorite1); setContentView(R.layout.activity_favorite1);
editText = (EditText) findViewById(R.id.editText1);
editText.addTextChangedListener(new EditChangedListener());
imageButton_clear = (ImageButton) findViewById(R.id.imageButton_clear1);
imageButton_clear.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
editText.setText("");
}
});
imageButton_clear.setVisibility(View.GONE);
expandableListView = (ExpandableListView) findViewById(R.id.expandablelistView); expandableListView = (ExpandableListView) findViewById(R.id.expandablelistView);
expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() { expandableListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@ -227,7 +242,6 @@ public class FavoriteActivity1 extends Activity {
@Override @Override
public boolean onContextItemSelected(MenuItem item) { public boolean onContextItemSelected(MenuItem item) {
ExpandableListView.ExpandableListContextMenuInfo menuInfo = (ExpandableListView.ExpandableListContextMenuInfo) item.getMenuInfo(); ExpandableListView.ExpandableListContextMenuInfo menuInfo = (ExpandableListView.ExpandableListContextMenuInfo) item.getMenuInfo();
position = expandableListView.getFirstVisiblePosition();
switch (item.getGroupId()) { switch (item.getGroupId()) {
case 0: case 0:
final String group_name = ((TextView) menuInfo.targetView.findViewById(R.id.group_name)).getText().toString(); final String group_name = ((TextView) menuInfo.targetView.findViewById(R.id.group_name)).getText().toString();
@ -345,6 +359,7 @@ public class FavoriteActivity1 extends Activity {
int i = db.update(DBHelper.TableName, values, "_id = " + sid, null); int i = db.update(DBHelper.TableName, values, "_id = " + sid, null);
if (i != -1) { if (i != -1) {
onCreate(null); onCreate(null);
//expandableListView.expandGroup(position);
} else } else
Toast.makeText(getApplicationContext(), "修改失败", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "修改失败", Toast.LENGTH_SHORT).show();
try { try {
@ -452,4 +467,24 @@ public class FavoriteActivity1 extends Activity {
} }
} }
class EditChangedListener implements TextWatcher {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
@Override
public void afterTextChanged(Editable s) {
if (s.toString().equals("")) {
imageButton_clear.setVisibility(View.GONE);
} else {
imageButton_clear.setVisibility(View.VISIBLE);
}
//search(0, s.toString());
}
}
} }

View File

@ -111,8 +111,8 @@ public class MainActivity extends Activity {
InputMethodManager IMM; InputMethodManager IMM;
ProgressBar pgb1; ProgressBar pgb1;
String urlo = "", HTRE = "", ptitle = "", urln = ""; String urlo = "", HTRE = "", ptitle = "", urln = "";
String urlVersion = "https://www.gitlink.org.cn/api/sonichy/HTYBrowser/raw?filepath=version&ref=master"; String url_version = "https://www.gitlink.org.cn/api/sonichy/HTYBrowser/raw?filepath=version&ref=master";
String urlUpdate = "https://www.gitlink.org.cn/api/sonichy/HTYBrowser/raw?filepath=app.apk&ref=master"; String url_update = "https://www.gitlink.org.cn/api/sonichy/HTYBrowser/raw?filepath=app.apk&ref=master";
CustomViewCallback customViewCallback; CustomViewCallback customViewCallback;
boolean isFullScreen, isManualCheckUpdate = false; boolean isFullScreen, isManualCheckUpdate = false;
static File dir; static File dir;
@ -241,7 +241,6 @@ public class MainActivity extends Activity {
checkUpdate(); checkUpdate();
} }
}; };
new Thread(CU).start();
receiver = new DownloadCompleteReceiver(); receiver = new DownloadCompleteReceiver();
IntentFilter intentFilter = new IntentFilter(); IntentFilter intentFilter = new IntentFilter();
@ -1171,7 +1170,7 @@ public class MainActivity extends Activity {
// 添加一个下载任务 // 添加一个下载任务
long downloadId = downloadManager.enqueue(request); long downloadId = downloadManager.enqueue(request);
Log.e(Thread.currentThread().getStackTrace()[2] + "", downloadId + ""); Log.e(Thread.currentThread().getStackTrace()[2] + "", downloadId + "");
if(surl == urlUpdate){ if (surl == url_update) {
downloadIdUpdate = downloadId; downloadIdUpdate = downloadId;
} }
} }
@ -1179,14 +1178,23 @@ public class MainActivity extends Activity {
void checkUpdate() { void checkUpdate() {
try { try {
String versionL = MainActivity.this.getPackageManager().getPackageInfo(MainActivity.this.getPackageName(), 0).versionName; String versionL = MainActivity.this.getPackageManager().getPackageInfo(MainActivity.this.getPackageName(), 0).versionName;
URL url = new URL(urlVersion); URL url = new URL(url_version);
HttpURLConnection conn = (HttpURLConnection) url.openConnection(); HttpURLConnection conn = (HttpURLConnection) url.openConnection();
//conn.setRequestMethod("GET"); //conn.setRequestMethod("GET");
//if (conn.getResponseCode() == 200) { //if (conn.getResponseCode() == 200) {
InputStream IS = conn.getInputStream(); InputStream IS = conn.getInputStream();
InputStreamReader ISR = new InputStreamReader(IS); InputStreamReader ISR = new InputStreamReader(IS);
BufferedReader bufferReader = new BufferedReader(ISR); BufferedReader BR = new BufferedReader(ISR);
String versionS = bufferReader.readLine(); String versionS = BR.readLine();
if (!versionS.startsWith("{") && !versionS.endsWith("}")) {
Looper.prepare();
Toast.makeText(getApplicationContext(), "服务器版本号解析错误:\n" + versionS, Toast.LENGTH_SHORT).show();
Looper.myLooper().loop();
return;
} else {
versionS = versionS.replace("{", "");
versionS = versionS.replace("}", "");
}
Log.e(Thread.currentThread().getStackTrace()[2] + "", versionS + " > " + versionL + " ?"); Log.e(Thread.currentThread().getStackTrace()[2] + "", versionS + " > " + versionL + " ?");
String[] AVersionS = versionS.split("\\."); String[] AVersionS = versionS.split("\\.");
String[] AVersionL = versionL.split("\\."); String[] AVersionL = versionL.split("\\.");
@ -1200,7 +1208,7 @@ public class MainActivity extends Activity {
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override @Override
public void onClick(DialogInterface dialog, int which) { public void onClick(DialogInterface dialog, int which) {
downloadBySystem(urlUpdate, "", "", "", "HTYBrowser.apk"); downloadBySystem(url_update, "", "", "", "HTYBrowser.apk");
} }
}); });
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@ -1212,7 +1220,7 @@ public class MainActivity extends Activity {
dialog.show(); dialog.show();
Looper.myLooper().loop(); Looper.myLooper().loop();
} else { } else {
if(isManualCheckUpdate) { if (isManualCheckUpdate) {
Looper.prepare(); Looper.prepare();
Toast.makeText(getApplicationContext(), "当前版本 " + versionL + " >= 服务器版本 "+ versionS + ",是最新的版本", Toast.LENGTH_SHORT).show(); Toast.makeText(getApplicationContext(), "当前版本 " + versionL + " >= 服务器版本 "+ versionS + ",是最新的版本", Toast.LENGTH_SHORT).show();
Looper.myLooper().loop(); Looper.myLooper().loop();
@ -1220,10 +1228,9 @@ public class MainActivity extends Activity {
Log.e("检查更新: ", "当前版本是最新的版本"); Log.e("检查更新: ", "当前版本是最新的版本");
} }
//} //}
} catch (PackageManager.NameNotFoundException e) { } catch (Exception e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace(); e.printStackTrace();
Toast.makeText(getApplicationContext(), e.toString(), Toast.LENGTH_SHORT).show();
} }
} }

View File

@ -1 +1 @@
4.30 {4.31}