我正在尝试使用从特定网址下载的图片在主屏幕上创建快捷方式。我做的是,我从URL下载了图像并将其转换为位图并尝试创建快捷方式。但该应用程序崩溃显示以下错误。
错误:
FATAL EXCEPTION: main
Process: com.kalpnik.vrdevotee, PID: 10209
java.lang.RuntimeException: Failure from system
at android.app.ContextImpl.sendBroadcast(ContextImpl.java:772)
at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:396)
at com.kalpnik.vrdevotee.Helper.ShortCutHelper.createShortcutIcon(ShortCutHelper.java:53)
at com.kalpnik.vrdevotee.Components.CategoryInfoActivity$DownloadBitmapTask.onPostExecute(CategoryInfoActivity.java:110)
at com.kalpnik.vrdevotee.Components.CategoryInfoActivity$DownloadBitmapTask.onPostExecute(CategoryInfoActivity.java:88)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5459)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
Caused by: android.os.TransactionTooLargeException: data parcel size 1049508 bytes
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:503)
at android.app.ActivityManagerProxy.broadcastIntent(ActivityManagerNative.java:3128)
at android.app.ContextImpl.sendBroadcast(ContextImpl.java:767)
at android.content.ContextWrapper.sendBroadcast(ContextWrapper.java:396)
at com.kalpnik.vrdevotee.Helper.ShortCutHelper.createShortcutIcon(ShortCutHelper.java:53)
at com.kalpnik.vrdevotee.Components.CategoryInfoActivity$DownloadBitmapTask.onPostExecute(CategoryInfoActivity.java:110)
at com.kalpnik.vrdevotee.Components.CategoryInfoActivity$DownloadBitmapTask.onPostExecute(CategoryInfoActivity.java:88)
at android.os.AsyncTask.finish(AsyncTask.java:651)
at android.os.AsyncTask.-wrap1(AsyncTask.java)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5459)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:728)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
以下是我用来创建快捷方式的代码。
public static void createShortcutIcon(Activity a, Context c, Categories parentCategory,
Bitmap bitmap) {
// Apend the entityName so we know what we are specifically looking for
PREF_KEY_SHORTCUT_ADDED += "_" + parentCategory.getId();
// Checking if ShortCut was already added
SharedPreferences sharedPreferences =
c.getSharedPreferences(Constants.APP_PREF_ID, Context.MODE_PRIVATE);
boolean shortCutWasAlreadyAdded = sharedPreferences.getBoolean(PREF_KEY_SHORTCUT_ADDED, false);
if (shortCutWasAlreadyAdded) return;
Intent shortcutIntent = new Intent(c.getApplicationContext(), MainActivity.class);
shortcutIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
Intent addIntent = new Intent();
addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, parentCategory.getName());
addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON, bitmap);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putBoolean(PREF_KEY_SHORTCUT_ADDED, true);
editor.apply();
addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
addIntent.putExtra("duplicate", false);
c.sendBroadcast(addIntent);
// Remembering that ShortCut was already added
Timber.d("Completed shortcut creation");
}
我真的被困在这里了。无法为此找到任何解决方案。
我还尝试使用以下代码调整位图大小:
public Bitmap getResizedBitmap(Bitmap image, int maxSize) {
int width = image.getWidth();
int height = image.getHeight();
float bitmapRatio = (float) width / (float) height;
if (bitmapRatio > 1) {
width = maxSize;
height = (int) (width / bitmapRatio);
} else {
height = maxSize;
width = (int) (height * bitmapRatio);
}
return Bitmap.createScaledBitmap(image, width, height, true);
}
但使用此位图调整大小后不再有效。我不能在imageview上显示它。请帮忙。
答案 0 :(得分:1)
从here得到答案。
使用以下try{
doc = Jsoup.connect( URL ).
userAgent(“chrome/34.0.1847.131”)
.header(“Authorization”,”Basic”+encodedString)
.followRedirects(true)
.maxBodySize(0)
.get();
} catch (IOException e) {
}
code.
现在它正在运作。