From 109cd67b133ef7900b0a244ec890760344ed675b Mon Sep 17 00:00:00 2001 From: sonichy Date: Mon, 25 Feb 2019 19:59:40 +0800 Subject: [PATCH] Support Chrome debug --- app.apk | Bin 315231 -> 419266 bytes main/assets/about.htm | 2 +- .../com/hty/browser/FavoriteActivity.java | 400 ++++++++++++------ main/java/com/hty/browser/MainActivity.java | 48 ++- main/res/layout/activity_favorite.xml | 54 ++- main/res/layout/activity_main.xml | 7 +- main/res/layout/favorite_row.xml | 78 ++-- 7 files changed, 399 insertions(+), 190 deletions(-) diff --git a/app.apk b/app.apk index 81bf18dc7fadb4557aac7c9b3a877c3632279320..f2fe5dbc5edc2fdafc93a82a20c4727426668351 100644 GIT binary patch delta 40079 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 delta 35112 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自动安装apk包

    获取网页图标

    更新日志:

    -

    V3.12 (2019-02-19)

    1. 支持跨域。
    2. 获取网页图标。
    +

    V3.12 (2019-02-25)

    1. 支持跨域。
    2. 获取网页图标。
    3. 屏蔽百度首页视频百度好看跳转下载。
    4. Android API 19 以上开启调试,运行 adb devices 连接手机,Chrome 浏览器 chrome://inspect 查看。

    V3.11 (2019-02-13)

    1. 链接中的关键字屏蔽、高亮可设置。

    V3.10 (2019-02-10)

    1. 增加:收藏前修改,收藏后修改,修改校验。

    V3.9 (2018-12-20)

    1. 视频独立播放JS读不到iframe里的video,使用跳转iframe代替。
    diff --git a/main/java/com/hty/browser/FavoriteActivity.java b/main/java/com/hty/browser/FavoriteActivity.java index 6d3a0e3..f76f164 100644 --- a/main/java/com/hty/browser/FavoriteActivity.java +++ b/main/java/com/hty/browser/FavoriteActivity.java @@ -10,9 +10,11 @@ import android.content.DialogInterface; import android.content.Intent; import android.database.Cursor; import android.database.sqlite.SQLiteDatabase; -import android.graphics.Color; -import android.graphics.drawable.ColorDrawable; +import android.graphics.Bitmap; +import android.graphics.BitmapFactory; import android.os.Bundle; +import android.os.Handler; +import android.os.Message; import android.text.Editable; import android.text.TextWatcher; import android.util.Log; @@ -23,160 +25,238 @@ import android.view.View; import android.view.View.OnCreateContextMenuListener; import android.view.WindowManager; import android.view.inputmethod.InputMethodManager; +import android.webkit.WebIconDatabase; import android.widget.AdapterView; import android.widget.AdapterView.AdapterContextMenuInfo; import android.widget.AdapterView.OnItemClickListener; import android.widget.EditText; +import android.widget.ImageButton; +import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.ListView; import android.widget.SimpleCursorAdapter; import android.widget.TextView; import android.widget.Toast; +import java.io.IOException; +import java.io.InputStream; import java.lang.reflect.Field; +import java.net.HttpURLConnection; +import java.net.MalformedURLException; +import java.net.URL; public class FavoriteActivity extends Activity { - SimpleCursorAdapter adapter; - ListView listView; - EditText editText; + SimpleCursorAdapter adapter; + ListView listView; + EditText editText; InputMethodManager IMM; + ImageButton imageButton_clear; + WebIconDatabase WID; - @Override - protected void onCreate(Bundle savedInstanceState) { - super.onCreate(savedInstanceState); - setContentView(R.layout.activity_favorite); + @Override + protected void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + setContentView(R.layout.activity_favorite); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN); - editText = (EditText) findViewById(R.id.editText); + editText = (EditText) findViewById(R.id.editText); editText.addTextChangedListener(new EditChangedListener()); listView = (ListView) findViewById(R.id.listView1); + imageButton_clear = (ImageButton) findViewById(R.id.imageButton_clear); + imageButton_clear.setOnClickListener(new ButtonListener()); + imageButton_clear.setVisibility(View.GONE); search(editText.getText().toString()); IMM = (InputMethodManager) getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); - } + WID = WebIconDatabase.getInstance(); + WID.open(getDir("icons", MODE_PRIVATE).getPath()); + } - @Override - public boolean onContextItemSelected(MenuItem item) { - AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); - switch (item.getItemId()) { - case 0: - ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); - String url = ((TextView) menuInfo.targetView.findViewById(R.id.website)).getText().toString(); - cm.setPrimaryClip(ClipData.newPlainText("link", url)); - Toast.makeText(getApplicationContext(), "链接已复制", Toast.LENGTH_SHORT).show(); - break; - case 1: - int id = Integer.parseInt(((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString()); - DBHelper helper = new DBHelper(getApplicationContext()); - helper.del(id); - Cursor c = helper.query(editText.getText().toString()); - String[] from = { "_id", "title", "website" }; - int[] to = { R.id.id, R.id.title, R.id.website }; - adapter = new SimpleCursorAdapter(this, R.layout.favorite_row, c, from, to, 0); - listView.setAdapter(adapter); - break; - case 2: - final String sid = ((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString(); - final String stitle = ((TextView) menuInfo.targetView.findViewById(R.id.title)).getText().toString(); - final String surl = ((TextView) menuInfo.targetView.findViewById(R.id.website)).getText().toString(); - LinearLayout layout = new LinearLayout(FavoriteActivity.this); - layout.setOrientation(LinearLayout.VERTICAL); - final EditText ET_title = new EditText(FavoriteActivity.this); - ET_title.setHint("标题"); - ET_title.setText(stitle); - layout.addView(ET_title); - final EditText ET_url = new EditText(FavoriteActivity.this); - ET_title.setHint("网址"); - ET_url.setText(surl); - layout.addView(ET_url); - AlertDialog.Builder builder = new AlertDialog.Builder(FavoriteActivity.this); - builder.setIcon(android.R.drawable.btn_star_big_on); - builder.setTitle("修改收藏"); - builder.setView(layout); - builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - String stitle = ET_title.getText().toString(); - String surl = ET_url.getText().toString(); - Field field = null; - try { - //通过反射获取dialog中的私有属性mShowing - field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); - field.setAccessible(true);//设置该属性可以访问 - } catch (Exception ex) { + class ButtonListener implements View.OnClickListener { + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.imageButton_clear: + editText.setText(""); + break; + } + } + } - } - if (!stitle.equals("") && surl.startsWith("http")) { - DBHelper dbHelper = new DBHelper(getApplicationContext()); - SQLiteDatabase db = dbHelper.getWritableDatabase(); - ContentValues values = new ContentValues(); - values.put("website", surl); - values.put("title", stitle); - db.update(DBHelper.TableName, values, "_id = " + sid, null); - IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); - Cursor c = dbHelper.query(editText.getText().toString()); - String[] from = { "_id", "title", "website" }; - int[] to = { R.id.id, R.id.title, R.id.website }; - adapter = new SimpleCursorAdapter(FavoriteActivity.this, R.layout.favorite_row, c, from, to, 0); - listView.setAdapter(adapter); + @Override + public boolean onContextItemSelected(MenuItem item) { + AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo(); + switch (item.getItemId()) { + case 0: + ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE); + String url = ((TextView) menuInfo.targetView.findViewById(R.id.website)).getText().toString(); + cm.setPrimaryClip(ClipData.newPlainText("link", url)); + Toast.makeText(getApplicationContext(), "链接已复制", Toast.LENGTH_SHORT).show(); + break; + case 1: + int id = Integer.parseInt(((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString()); + DBHelper helper = new DBHelper(getApplicationContext()); + helper.del(id); + search(editText.getText().toString()); + break; + case 2: + final String sid = ((TextView) menuInfo.targetView.findViewById(R.id.id)).getText().toString(); + final String stitle = ((TextView) menuInfo.targetView.findViewById(R.id.title)).getText().toString(); + final String surl = ((TextView) menuInfo.targetView.findViewById(R.id.website)).getText().toString(); + LinearLayout layout = new LinearLayout(FavoriteActivity.this); + layout.setOrientation(LinearLayout.VERTICAL); + final EditText ET_title = new EditText(FavoriteActivity.this); + ET_title.setHint("标题"); + ET_title.setText(stitle); + layout.addView(ET_title); + final EditText ET_url = new EditText(FavoriteActivity.this); + ET_title.setHint("网址"); + ET_url.setText(surl); + layout.addView(ET_url); + AlertDialog.Builder builder = new AlertDialog.Builder(FavoriteActivity.this); + builder.setIcon(android.R.drawable.btn_star_big_on); + builder.setTitle("修改收藏"); + builder.setView(layout); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String stitle = ET_title.getText().toString(); + String surl = ET_url.getText().toString(); + Field field = null; + try { + //通过反射获取dialog中的私有属性mShowing + field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); + field.setAccessible(true);//设置该属性可以访问 + } catch (Exception ex) { + + } + if (!stitle.equals("") && (surl.startsWith("http") || !surl.startsWith("file:///"))) { + DBHelper dbHelper = new DBHelper(getApplicationContext()); + SQLiteDatabase db = dbHelper.getWritableDatabase(); + ContentValues values = new ContentValues(); + values.put("website", surl); + values.put("title", stitle); + db.update(DBHelper.TableName, values, "_id = " + sid, null); + IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); + search(editText.getText().toString()); + try { + //关闭 + field.set(dialog, true); + dialog.dismiss(); + } catch (Exception ex) { + } + } else { + if (stitle.equals("")){ + ET_title.setError("标题不能为空!"); + } + if (!surl.startsWith("http") || !surl.startsWith("file:///")){ + ET_url.setError("网址错误!"); + } + try { + //设置dialog不可关闭 + field.set(dialog, false); + dialog.dismiss(); + } catch (Exception ex) { + } + } + } + }); + builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); + Field field = null; + try { + //通过反射获取dialog中的私有属性mShowing + field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); + field.setAccessible(true);//设置该属性可以访问 + } catch (Exception ex) { + } try { - //关闭 field.set(dialog, true); dialog.dismiss(); } catch (Exception ex) { } - } else { - if (stitle.equals("")){ - ET_title.setError("标题不能为空!"); - } - if (!surl.startsWith("http")){ - ET_url.setError("网址错误!"); - } - try { - //设置dialog不可关闭 - field.set(dialog, false); - dialog.dismiss(); - } catch (Exception ex) { - } } - } - }); - builder.setNegativeButton("取消", new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - IMM.hideSoftInputFromWindow(ET_title.getWindowToken(), 0); - Field field = null; - try { - //通过反射获取dialog中的私有属性mShowing - field = dialog.getClass().getSuperclass().getDeclaredField("mShowing"); - field.setAccessible(true);//设置该属性可以访问 - } catch (Exception ex) { - } - try { - field.set(dialog, true); - dialog.dismiss(); - } catch (Exception ex) { - } - } - }); - builder.create().show(); - break; - } - return true; - } + }); + builder.create().show(); + break; + } + return true; + } - public void favback(View v) { + public void favback(View v) { IMM.hideSoftInputFromWindow(editText.getWindowToken(), 0); - finish(); - } + finish(); + } - void search(String s) { + void search(String s) { DBHelper helper = new DBHelper(this); Cursor c = helper.query(s); - String[] from = { "_id", "title", "website" }; - int[] to = { R.id.id, R.id.title, R.id.website }; + String[] from = { "_id", "title", "website", "website" }; + int[] to = { R.id.id, R.id.title, R.id.website, R.id.imageView_favicon }; adapter = new SimpleCursorAdapter(this, R.layout.favorite_row, c, from, to, 0); + adapter.setViewBinder(new SimpleCursorAdapter.ViewBinder(){ + public boolean setViewValue(View view, Cursor cursor, int columnIndex){ + //Log.e("L192", view.toString() + columnIndex); + if(view.getId() == R.id.imageView_favicon){ + String website = cursor.getString(columnIndex); + // if (website.startsWith("https://")) { + // //((ImageView) view).setImageResource(android.R.drawable.ic_secure); + // Runner1 r1 = new Runner1(); + // r1.setUrl("https://static.easyicon.net/preview/52/523893.gif"); + // r1.setView(view); + // Thread thread1 = new Thread(r1); + // thread1.start(); + // return true; + // } else if (website.startsWith("http://")) { + // // ((ImageView) view).setImageResource(android.R.drawable.ic_partial_secure); + // Runner1 r1 = new Runner1(); + // r1.setUrl("https://static.easyicon.net/preview/1/11847.gif"); + // r1.setView(view); + // Thread thread1 = new Thread(r1); + // thread1.start(); + // return true; + // } else { + // ((ImageView) view).setImageResource(R.drawable.network); + // return true; + // } + Runner1 r1 = new Runner1(); + r1.setUrl(website); + r1.setView(view); + Thread thread1 = new Thread(r1); + thread1.start(); + return true; + } + return false; + } + }); listView.setAdapter(adapter); - listView.setDivider(new ColorDrawable(Color.GREEN)); - listView.setDividerHeight(2); + + // WebIconDatabase WID = WebIconDatabase.getInstance(); + // WID.open(getDir("icons", MODE_PRIVATE).getPath()); + // for (int i=0; i arg0, View arg1, int arg2, long arg3) { @@ -200,6 +280,7 @@ public class FavoriteActivity extends Activity { menu.add(0, 2, 2, "修改"); } }); + } class EditChangedListener implements TextWatcher { @@ -216,8 +297,81 @@ public class FavoriteActivity extends Activity { @Override public void afterTextChanged(Editable s) { - search(s.toString()); + if(s.toString().equals("")){ + imageButton_clear.setVisibility(View.GONE); + }else{ + imageButton_clear.setVisibility(View.VISIBLE); + } + search(s.toString()); } } -} + public Bitmap webBitMap(String surl) { + URL url = null; + Bitmap bitmap = null; + try { + url = new URL(surl); + } catch (MalformedURLException e) { + e.printStackTrace(); + } + try { + HttpURLConnection conn = (HttpURLConnection) url.openConnection(); + conn.setDoInput(true); + conn.connect(); + InputStream IS = conn.getInputStream(); + bitmap = BitmapFactory.decodeStream(IS); + IS.close(); + } catch (IOException e) { + e.printStackTrace(); + } + return bitmap; + } + + class Runner1 implements Runnable { + private String surl; + private View view; + + private void setUrl(String surl1) { + surl = surl1; + } + + private void setView(View view1) { + view = view1; + } + + public void run() { + // Bitmap bitmap = webBitMap(surl); + // Message msg = new Message(); + // Bundle bundle = new Bundle(); + // bundle.putParcelable("bitmap", bitmap); + // msg.setData(bundle); + // msg.obj = view; + // handler.sendMessage(msg); + Log.e("L350", surl); + WID.requestIconForPageUrl(surl, new WebIconDatabase.IconListener() { + public void onReceivedIcon(String url, Bitmap icon) { + Log.e("L353", url); + Message msg = new Message(); + Bundle bundle = new Bundle(); + bundle.putParcelable("bitmap", icon); + msg.setData(bundle); + msg.obj = view; + handler.sendMessage(msg); + } + }); + } + } + + static Handler handler = new Handler(){ + @Override + public void handleMessage(Message msg) { + super.handleMessage(msg); + Bundle bundle = msg.getData(); + Bitmap bitmap = bundle.getParcelable("bitmap"); + View view = (View) msg.obj; + Log.e("L372", "setIcon"); + ((ImageView) view).setImageBitmap(bitmap); + } + }; + +} \ No newline at end of file diff --git a/main/java/com/hty/browser/MainActivity.java b/main/java/com/hty/browser/MainActivity.java index d320c3d..6225927 100644 --- a/main/java/com/hty/browser/MainActivity.java +++ b/main/java/com/hty/browser/MainActivity.java @@ -41,6 +41,7 @@ import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.Uri; import android.os.AsyncTask; +import android.os.Build; import android.os.Bundle; import android.os.Environment; import android.os.Looper; @@ -165,7 +166,7 @@ public class MainActivity extends Activity { findClose.setOnClickListener(new ButtonListener()); editText1 = (EditText) findViewById(R.id.EditText1); webView1 = (WebView) findViewById(R.id.WebView1); - WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath()); //获取favicon图标路径 + WebIconDatabase.getInstance().open(getDir("icons", MODE_PRIVATE).getPath()); //获取图标数据库路径 registerForContextMenu(webView1); // 开启JS webView1.getSettings().setJavaScriptEnabled(true); @@ -196,13 +197,17 @@ public class MainActivity extends Activity { webView1.requestFocusFromTouch(); // 允许跨域 webView1.getSettings().setAllowUniversalAccessFromFileURLs(true); + // 允许调试 + if(Build.VERSION.SDK_INT >= 19) { + webView1.setWebContentsDebuggingEnabled(true); + } webView1.setWebViewClient(new WebViewClient() { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { Log.e("OverrideUrlLoading", url); // 协议过滤 - if(url.startsWith("http")){ + if(url.startsWith("http") && !url.startsWith("https://cdn-haokanapk.baidu.com/")){ view.loadUrl(url); } /* @@ -220,13 +225,16 @@ public class MainActivity extends Activity { @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { - super.onPageStarted(view, url, favicon); + //super.onPageStarted(view, url, favicon); editText1.setText(url); urln = url; btnBack.setEnabled(true); IMM.hideSoftInputFromWindow(editText1.getWindowToken(), 0); pgb1.setVisibility(View.VISIBLE); imageButton_info.setImageResource(android.R.drawable.ic_menu_info_details); +// if(favicon != null) { +// imageButton_info.setImageBitmap(favicon); +// } } @Override @@ -318,10 +326,7 @@ public class MainActivity extends Activity { // 接收网站图标(favicon) public void onReceivedIcon(WebView view, Bitmap icon) { - Matrix matrix = new Matrix(); - matrix.postScale((float)60 / icon.getWidth(), (float)60 / icon.getHeight()); - Bitmap bitmap = Bitmap.createBitmap(icon, 0, 0, icon.getWidth(), icon.getHeight(), matrix, true); - imageButton_info.setImageBitmap(bitmap); + imageButton_info.setImageBitmap(icon); } // 播放网络视频时全屏会被调用的方法 @@ -552,7 +557,6 @@ public class MainActivity extends Activity { @Override public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimetype, long contentLength) { Log.e("Download", url); - //if(!url.contains("baidu.com")) downloadBySystem(url, "", ""); } } @@ -563,16 +567,19 @@ public class MainActivity extends Activity { WebView w = (WebView) v; HitTestResult result = w.getHitTestResult(); HTRE = result.getExtra(); + menu.setHeaderIcon(android.R.drawable.ic_menu_report_image); menu.setHeaderTitle(HTRE); if (result.getType() == HitTestResult.IMAGE_TYPE || result.getType() == HitTestResult.SRC_IMAGE_ANCHOR_TYPE) { + menu.setHeaderIcon(android.R.drawable.ic_menu_gallery); // Context menu items do not support icons menu.add(0, 0, 0, "查看图片"); menu.add(0, 1, 1, "复制图片"); - menu.add(0, 2, 2, "保存图片"); + menu.add(0, 2, 2, "保存图片").setIcon(android.R.drawable.ic_menu_save); // Context menu items do not support icons menu.add(0, 3, 3, "复制链接"); menu.add(0, 4, 4, "屏蔽图片"); menu.add(0, 5, 5, "隐藏图片"); } if (result.getType() == HitTestResult.SRC_ANCHOR_TYPE) { + menu.setHeaderIcon(android.R.drawable.ic_menu_sort_alphabetically); menu.add(0, 2, 2, "下载"); menu.add(0, 3, 3, "复制链接"); } @@ -806,7 +813,8 @@ public class MainActivity extends Activity { Matrix matrix = new Matrix(); matrix.postScale((float)100/icon.getWidth(), (float)100/icon.getHeight()); Bitmap bitmap = Bitmap.createBitmap(icon, 0, 0, icon.getWidth(), icon.getHeight(), matrix, true); - builder.setIcon(new BitmapDrawable(getResources(), bitmap)); + BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap); + builder.setIcon(drawable); builder.setTitle("添加收藏"); builder.setView(layout); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @@ -822,7 +830,7 @@ public class MainActivity extends Activity { } catch (Exception ex) { } - if (!stitle.equals("") && surl.startsWith("http")) { + if (!stitle.equals("") && (surl.startsWith("http") || surl.startsWith("file:///"))) { DBHelper helper = new DBHelper(getApplicationContext()); Cursor c = helper.query(surl); if (c.getCount() == 0) { @@ -844,7 +852,7 @@ public class MainActivity extends Activity { if (stitle.equals("")){ ET_title.setError("标题不能为空!"); } - if (!surl.startsWith("http")){ + if (!surl.startsWith("http") || !surl.startsWith("file:///")){ ET_url.setError("网址错误!"); } try { @@ -1106,9 +1114,9 @@ public class MainActivity extends Activity { } // 调用系统下载,https://www.jianshu.com/p/6e38e1ef203a - private void downloadBySystem(String url, String contentDisposition, String mimeType) { + private void downloadBySystem(String surl, String contentDisposition, String mimeType) { // 指定下载地址 - DownloadManager.Request request = new DownloadManager.Request(Uri.parse(url)); + DownloadManager.Request request = new DownloadManager.Request(Uri.parse(surl)); // 允许媒体扫描,根据下载的文件类型被加入相册、音乐等媒体库 request.allowScanningByMediaScanner(); // 设置通知的显示类型,下载进行时和完成后显示通知 @@ -1116,27 +1124,27 @@ public class MainActivity extends Activity { // 设置通知栏的标题,如果不设置,默认使用文件名 // request.setTitle("This is title"); // 设置通知栏的描述 - // request.setDescription("This is description"); + request.setDescription(surl); // 允许在计费流量下下载 request.setAllowedOverMetered(false); // 允许该记录在下载管理界面可见 - request.setVisibleInDownloadsUi(true); + //request.setVisibleInDownloadsUi(true); // 允许漫游时下载 request.setAllowedOverRoaming(true); // 允许下载的网路类型 request.setAllowedNetworkTypes(DownloadManager.Request.NETWORK_WIFI); // 设置下载文件保存的路径和文件名 - String fileName = URLUtil.guessFileName(url, contentDisposition, mimeType); + String fileName = URLUtil.guessFileName(surl, contentDisposition, mimeType); Log.e("fileName:", fileName); request.setDestinationInExternalPublicDir(Environment.DIRECTORY_DOWNLOADS, fileName); // 自定义下载路径 - // request.setDestinationUri() - // request.setDestinationInExternalFilesDir() + //request.setDestinationUri(); + //request.setDestinationInExternalFilesDir(); DownloadManager downloadManager = (DownloadManager) getSystemService(DOWNLOAD_SERVICE); // 添加一个下载任务 long downloadId = downloadManager.enqueue(request); Log.e("downloadId:", downloadId+""); - if(url == urlUpdate){ + if(surl == urlUpdate){ downloadIdUpdate = downloadId; } } diff --git a/main/res/layout/activity_favorite.xml b/main/res/layout/activity_favorite.xml index c14ecb9..b9677f3 100644 --- a/main/res/layout/activity_favorite.xml +++ b/main/res/layout/activity_favorite.xml @@ -1,6 +1,7 @@ - + - + android:gravity="center" + android:orientation="horizontal" + android:paddingLeft="10dp" + android:paddingRight="10dp"> + + + + + + android:layout_height="wrap_content" + android:divider="#ccc" + android:dividerHeight="1dp" + android:paddingLeft="10dp" + android:paddingRight="10dp"> + + + \ No newline at end of file diff --git a/main/res/layout/activity_main.xml b/main/res/layout/activity_main.xml index c77dddd..a44048c 100644 --- a/main/res/layout/activity_main.xml +++ b/main/res/layout/activity_main.xml @@ -44,11 +44,10 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:id="@+id/LinearLayout1" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:gravity="center" + android:paddingLeft="5dp" + android:paddingRight="5dp"> - + - + android:layout_weight="5" + android:orientation="vertical"> - + + + + + + + \ No newline at end of file