در یکی از پروژه هایی که داشتم برای لود کردن خبر از آدرس صفحه استفاده کردم ، یعنی آدرس خبر را در WebView لود میکردم تا هم مشکل فونت و عکس و بزرگ و کوچک بودن متن حل شود هم یک ویو در سایت برای مان اضافه شود.
همه چیز خیلی خوب بود و در همه سایز ها و ورژن های مختلف بخوبی کار میکرد .
بعد از چند وقت یکی از دوستان که گوشی سامسونگ A5 2017 اندروید 8 داشت ، به من گفت که صفحه خبر برای من باز نمیشود و خطا میدهد.
جالب اینجاست که خودم همین گوشی را داشتم و کاملا بدون نقص برای من اجرا میشد ، گوشی را گرفتم و تست کردم ، دیدم در تمامی صفحات که WebView داشتم کرش میکنه ، چند اپلیکیشن خبری دیگر که WebView داشتن را روی گوشیش نصب کردم مانند( آخرین خبر) دیدم صفحه های WebView کرش میکنه ، گویا این مشکل واقعا وجود دارد و کسی متوجه نشده است .
در اینترنت جستجو کردم هیچ منبعی پیدا نکردم که این مشکل را گزارش کرده باشد . چند روز درگیر حل این مشکل شدم تا فهمیدم که در بعضی از گوشی ها که اندروید آنها آپدیت شده باشد ، زمانی که اینترنت کندی داشته باشند سیستم عامل Android System WebView را ناقص آپدیت میکند و ما به مشکل میخوریم .
هیچ راهی برای حل این مشمل نیست ، تنها میتوانیم جلوی کرش کردن را بگیریم . (اگر کسی راهی پیدا کرد کامت بزارد)
وقتی قرار است اکتیویتی اجرا شود در متد setContentView جلوی کرش کردن را بگیریم.
try { setContentView(R.layout.act_news_1); } catch (Exception e) { e.printStackTrace(); setContentView(R.layout.act_news_2); }
اگر کرش نکند لایه act_news_1 اجرا میشود و اگر کرش کند لایه act_news_2 .
در لایه act_news_2 میتوانید بجای وب ویو صفحه را دانلود کنید و بصورت html در textView نمایش دهید.
txtView.setText((Html.fromHtml(htmlText)));
نظرات (۲)
محمد
سه شنبه ۲۲ آبان ۹۷ , ۱۶:۰۶مسلم خان بیکی
۲۶ آبان ۹۷، ۱۴:۱۳aliz6398suisiTerminator
چهارشنبه ۱ تیر ۰۱ , ۰۳:۲۱برنامه ساخته شده تنها در گوشی که توسطش ساخته شده نصب میشه و به درستی کار میکنه برای دیگر درست کار نمیکنه اگه یه وقت مشکل مربوط به نصب نشدن پیش اومد با برنامه رو امضا کرد خب معلومه با try catch میشه جلوی کرش رو گرفت اینو تو جاوا اسکریپت هم داشتم