diff --git a/app.apk b/app.apk index f1a80fb..65f51fe 100644 Binary files a/app.apk and b/app.apk differ diff --git a/main/java/com/hty/browser/MainActivity.java b/main/java/com/hty/browser/MainActivity.java index 927adc1..b0cf038 100644 --- a/main/java/com/hty/browser/MainActivity.java +++ b/main/java/com/hty/browser/MainActivity.java @@ -144,7 +144,7 @@ public class MainActivity extends Activity { super.onCreate(savedInstanceState); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { //Log.e(Thread.currentThread().getStackTrace()[2] + "", "checkSelfPermission: " + checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE)); - if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) { + if (checkSelfPermission(Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED && checkSelfPermission(Manifest.permission.INSTALL_SHORTCUT) != PackageManager.PERMISSION_GRANTED) { requestPermissions(PERMISSIONS, REQUEST_PERMISSION_CODE); } } @@ -759,12 +759,12 @@ public class MainActivity extends Activity { spinner.setAdapter(adapter); layout.addView(spinner); AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); - Bitmap icon = list_webView.get(currentPage).getFavicon(); - if (icon == null) - icon = BitmapFactory.decodeResource(getResources(), R.drawable.network); + Bitmap bitmap = list_webView.get(currentPage).getFavicon(); + if (bitmap == null) + bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.network); 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); + matrix.postScale((float)100/bitmap.getWidth(), (float)100/bitmap.getHeight()); + bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); BitmapDrawable drawable = new BitmapDrawable(getResources(), bitmap); builder.setIcon(drawable); builder.setTitle("添加收藏"); @@ -1002,21 +1002,100 @@ public class MainActivity extends Activity { break; case 22: if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { - ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); - if (shortcutManager.isRequestPinShortcutSupported()) { - String url = list_webView.get(currentPage).getUrl(); - String title = list_webView.get(currentPage).getTitle(); - Intent shortcutIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(getApplicationContext(), url) - .setShortLabel(title) - .setLongLabel(title) - .setIcon(Icon.createWithResource(getApplicationContext(), R.drawable.ic_launcher)) - .setIntent(shortcutIntent) - .build(); - Intent pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(shortcutInfo); - PendingIntent successCallback = PendingIntent.getBroadcast(getApplicationContext(), 0, pinnedShortcutCallbackIntent, 0); - shortcutManager.requestPinShortcut(shortcutInfo, successCallback.getIntentSender()); - } + layout = new LinearLayout(MainActivity.this); + layout.setOrientation(LinearLayout.VERTICAL); + final EditText editText_title1 = new EditText(MainActivity.this); + editText_title1.setHint("标题"); + editText_title1.setMaxLines(1); + editText_title1.setText(list_webView.get(currentPage).getTitle()); + layout.addView(editText_title1); + final EditText editText_url1 = new EditText(MainActivity.this); + editText_url1.setMaxLines(5); + editText_url1.setHint("网址"); + editText_url1.setText(list_webView.get(currentPage).getUrl()); + layout.addView(editText_url1); + builder = new AlertDialog.Builder(MainActivity.this); + bitmap = list_webView.get(currentPage).getFavicon(); + if (bitmap == null) + bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher); + //Matrix matrix = new Matrix(); + //matrix.postScale((float)100/icon.getWidth(), (float)100/icon.getHeight()); + //bitmap = Bitmap.createBitmap(bitmap, 0, 0, icon1.getWidth(), icon.getHeight(), matrix, true); + drawable = new BitmapDrawable(getResources(), bitmap); + final Icon icon = Icon.createWithBitmap(bitmap); + builder.setIcon(drawable); + builder.setTitle("添加到桌面"); + builder.setView(layout); + builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + String stitle = editText_title1.getText().toString(); + String surl = editText_url1.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:///"))) { + ShortcutManager shortcutManager = getSystemService(ShortcutManager.class); + if (shortcutManager.isRequestPinShortcutSupported()) { + Intent shortcutIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(surl)); + ShortcutInfo shortcutInfo = new ShortcutInfo.Builder(getApplicationContext(), surl) + .setShortLabel(stitle) + .setLongLabel(stitle) + //.setIcon(Icon.createWithResource(getApplicationContext(), R.drawable.ic_launcher)) + .setIcon(icon) + .setIntent(shortcutIntent) + .build(); + Intent pinnedShortcutCallbackIntent = shortcutManager.createShortcutResultIntent(shortcutInfo); + PendingIntent successCallback = PendingIntent.getBroadcast(getApplicationContext(), 0, pinnedShortcutCallbackIntent, 0); + shortcutManager.requestPinShortcut(shortcutInfo, successCallback.getIntentSender()); + } + IMM.hideSoftInputFromWindow(editText_title1.getWindowToken(), 0); + try { + //关闭 + field.set(dialog, true); + dialog.dismiss(); + } catch (Exception ex) { + } + } else { + if (stitle.equals("")){ + editText_title1.setError("标题不能为空!"); + } + if (!surl.startsWith("http://") || !surl.startsWith("https://") || !surl.startsWith("file://")) { + editText_url1.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(editText_title1.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(); } else { Toast.makeText(getApplicationContext(), "不支持创建快捷方式", Toast.LENGTH_SHORT).show(); }