添加到桌面:先编辑,增加图标

This commit is contained in:
sonichy 2024-04-30 22:10:08 +08:00
parent ebaeadfb2d
commit 07ec466136
2 changed files with 100 additions and 21 deletions

BIN
app.apk

Binary file not shown.

View File

@ -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();
}