به نام خدا. در این مبحث ابتدا به معرفی WebView در اندروید پرداخته سپس با نحوه فراخوانی و نمایش صفحات وب (HTML) آنلاین و آفلاین آشنا میشویم.
WebView چیست؟
WebView یکی دیگر از View (Widget)های کاربردی پلتفرم اندروید است. توسط این View میتوانیم یک صفحهی وب آنلاین یا آفلاین (لوکال) را درون یک Activity به کاربر نمایش دهیم. درست مانند باز کردن یک وبسایت در مرورگری مانند Chrome با این تفاوت که کاربر، صفحه وب را درون برنامه مشاهده میکند و به یک مرورگر مستقل منتقل نمیشود.
در WebView امکان کنترل محتوای دریافتی از صفحهی وب وجود دارد. به عنوان مثال میتوانیم تعیین کنیم کدهای JavaScript (جاوا اسکریپت) که در طراحی صفحات وب با کدهای HTML ترکیب میشوند امکان اجرا داشته باشد یا خیر.
کاربردهای WebView در اندروید
کاربردهای متعددی را میتوان برای این View ذکر کرد. یکی از مثالهای بارز و پرکاربرد، نمایش نقشههای آنلاین مانند Google Maps است. اگر قصد دارید محل شرکت خود را روی یک نقشه نشان دهید، استفاده از WebView یکی از گزینههای ساده و در دسترس است.
یک کاربرد دیگر، نمایش محتوایی است که مرتب در حال تغییر و بروزرسانی است. تعدادی از اپلیکیشنهای مطرح (ازجمله اینستاگرام) برای نمایش متن “شرایط و قوانین استفاده از اپلیکیشن” از یک وب ویو استفاده میکنند. درنتیجه کاربر با مراجعه به این صفحه (اکتیویتی) متن قوانین را به صورت آنلاین و بروز از سرورهای اینستاگرام دریافت میکند. مزیت این روش در این است که برای اصلاح و بروزرسانی متن نیازی به انجام تغییرات درون خود برنامه و انتشار نسخه جدید نیست و کاربر بدون نیاز به بروزرسانی اپلیکیشن، هربار که قصد مطالعه قوانین برنامه را داشته باشد، آخرین نسخه را مشاهده میکند.
یا فرض کنید یک وبسایت فروشگاهی راه اندازی کردهاید و به دلایلی (وقت کم، هزینهی زیاد و…) امکان ساخت اپلیکیشن کامل آنرا ندارید. در اینجا به راحتی میتوان همان وبسایت را در قالب یک اپلیکیشن موبایلی به کاربر عرضه کرد. درست مانند این است که کاربر وارد یک مرورگر شده و آدرس وبسایت شما را وارد کند. تنها تفاوت در این است که نیازی به وارد کردن آدرس نیست و به محض اجرای برنامه، وبسایت لود میشود.
در ادامه و در قالب یک پروژه شما را با WebView و قابلیتهای آن آشنا میکنم.
ساخت پروژه WebView در اندروید استودیو
یک پروژهی جدید در اندروید استودیو با نام WebView میسازم. اکتیویتی پیش فرض را از نوع Empty Activity انتخاب میکنم.
همانطور که در مبحث آموزش کتابخانه Retrofit اندروید اشاره شد، جهت امکان برقراری ارتباط بین اپلیکیشن و شبکه (اینترنت) نیاز به تعریف مجوز دسترسی (Permission) داریم. بنابراین مجوز مربوطه را به مانیفست پروژه اضافه میکنم:
AndroidManifest.xml:
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="ir.android_studio.webview"> <uses-permission android:name="android.permission.INTERNET" /> <application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest>
سپس در لایهی رابط کاربری اکتیویتی (UI) در حالت Design ویجت WebView را روی صفحهی پیش نمایش کشیده (Drag & drop) یا به صورت دستی و در حالت Text، تگ آنرا به Layout اضافه میکنم:
activity_main.xml:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".MainActivity"> <WebView android:id="@+id/web_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout>
حالا فایل جاوای اکتیویتی یعنی MainActivity.java را به صورت زیر تکمیل میکنم:
package ir.android_studio.webview; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.webkit.WebView; public class MainActivity extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = findViewById(R.id.web_view); String siteUrl = "https://android-studio.ir"; mWebView.loadUrl(siteUrl); } }
ابتدا یک شیء از کلاس WebView با نام دلخواه mWebView ساختم. سپس درون متد onCreate این شیء را به View مربوطه متصل کردم. در اینجا قصد دارم آدرس https://android-studio.ir را در این اکتیویتی نمایش دهم که این امر توسط متد loadUrl صورت میپذیرد. همانطور که از نام این متد پیداست، Url مدنظر ما بارگزاری (load) میشود. در نهایت محتوای این آدرس به mWebView که به ویجت web_view متصل شده ارسال میگردد.
پروژه را اجرا میکنم. اگر شبیه ساز یا دیوایس دسترسی به اینترنت داشته و وبسایت نیز در دسترس باشد، باید محتوای آن را نمایش دهد.
صفحهی وب با موفقیت درون اکتیویتی لود شده و میتوانم به بالا و پایین اسکرول کنم.
اگر هدف من از ساخت این اپلیکیشن، تبدیل وبسایت به یک برنامهی موبایلی باشد شاید تنها کار لازم حذف ActionBar است که در مبحث آموزش ساخت Toolbar در اندروید با نحوهی انجام آن آشنا شدیم. کافیست در فایل styles.xml استایل مربوط به Theme متریال پروژه را به Theme.AppCompat.Light.NoActionBar تغییر دهم:
styles.xml:
<style name="AppTheme" parent="Theme.AppCompat.Light.NoActionBar"> <!-- Customize your theme here. --> <item name="colorPrimary">@color/colorPrimary</item> <item name="colorPrimaryDark">@color/colorPrimaryDark</item> <item name="colorAccent">@color/colorAccent</item> </style>
بجز loadUrl متدهای دیگری مانند canGoBack()، canGoForward()، clearHistory()، getUrl()، getTitle() و… قابل استفاده است که در صورت نیاز میتوانید در مورد هرکدام جستجو کنید.
در ابتدای مبحث گفتیم در WebView امکان کنترل و اعمال تنظیمات بر روی اجزای دریافتی از صفحهی وب را داریم.
به عنوان مثال اجرای کدهای جاوا اسکریپت (جاوا اسکریپت را با جاوا اشتباه نگیرید) به صورت پیش فرض غیر فعال است که این امر باعث میشود منوی سایت من باز نشود. زیرا باز و بسته شدن زیرمنوها توسط کتابخانهی جیکوئری (jQuery) که با جاوا اسکریپت نوشته شده مدیریت و اجرا میشود.
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = findViewById(R.id.web_view); String siteUrl = "https://android-studio.ir"; mWebView.loadUrl(siteUrl); mWebView.getSettings().setJavaScriptEnabled(true); }
با استفاده از متد getSettings() امکان اجرای تنظیمات وسیعی وجود دارد که برای هرکدام یک متد مشخص تهیه شده. همانطور که در کد بالا ملاحظه میکنید با استفاده از متد setJavaScriptEnabled و مقدار true برای آن، کدهای جاوا اسکریپت فعال (Enable) میشوند. مجدد پروژه را Run یا Apply Changes میکنم تا تغییرات روی شبیه ساز بروزرسانی شود:
متدهای دیگری نیز در اختیار توسعه دهنده قرار گرفته تا بتواند بر حسب نیاز خود، سایر قسمتها را شخصی سازی کند:
برای مثال اولین مورد موجود در لیست (setDefaultFontSize) برای تعیین اندازه فونت بکار میرود.
یا با استفاده از متدهای زیر، دکمههای زوم به صفحه اضافه میشوند:
mWebView.getSettings().setSupportZoom(true); mWebView.getSettings().setBuiltInZoomControls(true); mWebView.getSettings().setDisplayZoomControls(true);
(دکمههای Zoom هنگام اسکرول صفحه ظاهر میشوند)
تعدادی دیگر از قابلیتها را توسط متد setWebViewClient میتوان مدیریت کرد. جهت مدیریت بهتر کدها ابتدا یک کلاس داخلی با نام دلخواه mWebViewClient درون اکتیویتی و بعد از بلاک مربوط به متد onCreate میسازم که از کلاس WebViewClient ارث بری میکند:
public class MainActivity extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = findViewById(R.id.web_view); String siteUrl = "https://android-studio.ir"; mWebView.loadUrl(siteUrl); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setSupportZoom(true); mWebView.getSettings().setBuiltInZoomControls(true); mWebView.getSettings().setDisplayZoomControls(true); } private class mWebViewClient extends WebViewClient { } }
اولین متدی که به این کلاس اضافه میکنم مربوط به مدیریت کلیک روی لینکهای موجود در صفحهی وب است. روی لینک یکی از مطالب وبسایت کلیک میکنم:
مشاهده میکنید صفحهی جدید در قالب یک مرورگر با نام WebView Browser Tester باز شده که چندان مطلوب نیست. متد shouldOverrideUrlLoading لینکها را مستقیما درون خود وبویو لود کرده و به مرورگر دیگری منتقل نمیشود.
از لیست متدی را انتخاب میکنم که پارامترهای ورودی آن از نوع WebView با نام view و String با نام url هستند. این متد با این دو پارامتر مدتیست از سوی اندروید منقضی یا Deprecated تلقی شده با اینحال همچنان استفاده میشود.
private class mWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } }
متد را به اینصورت اصلاح و تکمیل کردم. حالا با لمس یا کلیک روی هر لینک، آدرس موردنظر در قالب url توسط loadUrl لود و به view منتقل شده که باعث میشود صفحهی جدید مستقیما درون WebView نمایش داده شود.
قبل از اجرا و تست این متد، دو متد پرکاربرد دیگر را معرفی میکنم. متدهای onPageStarted و onPageFinished به ترتیب، زمان بارگزاری صفحه و پایان این پروسه را برمیگردانند.
private class mWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { super.onPageStarted(view, url, favicon); } @Override public void onPageFinished(WebView view, String url) { super.onPageFinished(view, url); } }
برای مثال میتوان در متد onPageStarted یک ProgressBar را اجرا کرده و در onPageFinished آنرا متوقف نمود. با اینحال برای درک بهتر و همچنین به حاشیه نرفتن مبحث آموزشی، از Toast استفاده میکنم:
private class mWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { Toast.makeText(MainActivity.this, "Loading page...", Toast.LENGTH_SHORT).show(); } @Override public void onPageFinished(WebView view, String url) { Toast.makeText(MainActivity.this, "Loading finished", Toast.LENGTH_SHORT).show(); } }
در نهایت متد setWebViewClient را درون onCreate تعریف کرده و ورودی آنرا کلاس mWebViewClient قرار میدهم:
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = findViewById(R.id.web_view); String siteUrl = "https://android-studio.ir"; mWebView.loadUrl(siteUrl); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setSupportZoom(true); mWebView.getSettings().setBuiltInZoomControls(true); mWebView.getSettings().setDisplayZoomControls(true); mWebView.setWebViewClient(new mWebViewClient()); }
پروژه را اجرا کرده و روی یک لینک کلیک میکنم:
مشاهده میکنید صفحهی جدید درون خود WebView بارگزاری شد نه یک مرورگر. همچنین پیغامهای بارگزاری (Loading page…) و اتمام بارگزاری (Loading finished) را میبینید که در قالب Toast چاپ شدهاند.
سورس کامل MainActivity.java:
package ir.android_studio.webview; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Bitmap; import android.os.Bundle; import android.webkit.WebView; import android.webkit.WebViewClient; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private WebView mWebView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWebView = findViewById(R.id.web_view); String siteUrl = "https://android-studio.ir"; mWebView.loadUrl(siteUrl); mWebView.getSettings().setJavaScriptEnabled(true); mWebView.getSettings().setSupportZoom(true); mWebView.getSettings().setBuiltInZoomControls(true); mWebView.getSettings().setDisplayZoomControls(true); mWebView.setWebViewClient(new mWebViewClient()); } private class mWebViewClient extends WebViewClient { @Override public boolean shouldOverrideUrlLoading(WebView view, String url) { view.loadUrl(url); return true; } @Override public void onPageStarted(WebView view, String url, Bitmap favicon) { Toast.makeText(MainActivity.this, "Loading page...", Toast.LENGTH_SHORT).show(); } @Override public void onPageFinished(WebView view, String url) { Toast.makeText(MainActivity.this, "Loading finished", Toast.LENGTH_SHORT).show(); } } }
نمایش صفحات HTML محلی و آفلاین در WebView
در قسمت قبل محتوای مدنظر ما از یک url و بصورت آنلاین دریافت میشد که مستلزم برقراری ارتباط اینترنتی بود. اما ممکن است در مواردی نیاز به نمایش محتوایی با فرمت وب و HTML بصورت آفلاین داشته باشیم. به عنوان مثال طراحی یک یا چند صفحهی خاص از اپلیکیشن برای توسعه دهندهای که با اصول طراحی صفحات وب نیز آشناست، ممکن است پیاده سازی آن در فرمت HTML و CSS سادهتر از کار با Layout های اندروید باشد. یا ممکن است شخص بخواهد یک اپلیکیشن کتابچه را بهطور کامل توسط صفحات وب پیادهسازی کند. محتوای این صفحات، ایستا (استاتیک) است و نیازی به اتصال به سرور نیست.
در این روش فایلهای مرتبط با صفحات وب را در فولدر assets پروژه قرار میدهیم. این فولدر به صورت پیشفرض وجود ندارد. برای ساخت آن در قسمت نمایش ساختار پروژه روی app راست کلیک کرده و مسیر
New > Folder > Assets Folder
را دنبال کرده و در پنجرهی باز شده Finish بزنید تا فولدر ساخته شود:
همچنین میتوان این کار را در خارج از محیط اندروید استودیو و در محل قرارگیری پروژه، این فولدر را اضافه کرد:
من یک صفحهی سادهی وب ساختم که شامل یک فایل html و یک css است:
این دو فایل را کپی کرده و در محیط اندروید استودیو یا File explorer سیستم عامل درون فولدر paste میکنم:
در مرحله آخر برای اجرای این فایلِ محلی بجای url وبسایت، آدرس زیر را در siteUrl جایگزین آدرس وبسایت میکنم:
String siteUrl = "file:///android_asset/index.html";
به اینصورت فایل index.html موجود در فولدر assets پروژه اندرویدی در WebView اجرا میشود:
در این پروژه صرفا جهت آشنایی با نحوهی اضافه کردن صفحات وب به اپلیکیشن یک صفحهی HTML بسیار ساده را استفاده کردم اما پیچیدهترین صفحات وب (شامل متن، تصویر، کدهای جاوا اسکریپت و..) را به تعداد زیاد و نامحدود میتوان در اپلیکیشنهای اندرویدی بکار برد.
مطالعهی بیشتر:
https://developer.android.com/reference/android/webkit/WebView
https://developer.android.com/reference/android/webkit/WebSettings
https://developer.android.com/guide/webapps/webview
توجه: سورس پروژه درون پوشه Exercises قرار دارد
تعداد صفحات : ۲۰
حجم : ۲ مگابایت
قیمت : رایگان
دانلود رایگان با حجم ۲ مگابایت لینک کمکی
سلام مهندس جان خسته نباشید
یه مشکلی داشتم لطفا امکانش باشه راهنماییم کنید
یه نرم افزار ساختم با webview که سایتم رو توش باز میکنه مشکلی که داشتم اینه که کد برای چک کردن اینترنت این کد (android:name=”android.permission.ACCESS_NETWORK_STATE” />) وارد میکنم در قسمت manifest ، تا اندروید ۶ کار میکنه ولی ۶ به بالا دچار مشکل میشه و سایت رو نمیتونه باز کنه
ولی وقتی این کد رو بر میدارم سایت دوباره رو گوشی اندروید ۱۰ هم کار میکنه ولی دیگه نمیتونه اینترنت رو چک کنه
لطفا راهنماییم کنید
سلام.
کد زیر رو استفاده کنید
http://dl.android-studio.ir/files/check_connection.txt
سلام خسته نباشید
ایا میشه از طریق وب ویو فرم ها پر کرد +همراه فایل ارسال کرد؟
منظورم این هست من داخل سایتم یک صفحه استخدام دارم که اطلاعات رو به همراه چند فایل pdf وjpg میگیره ایا اینکار توسط این اپ وب ویو هم انجام میشه ؟
بله
با سلام و خسته نباشید یه سوال داشتم خدمتتون من با این که setJavaScriptEnabled رو true قرار دام ولی بازم جاوا اسکریپت اجرا نمیشه میشه راهنمایی کنید ممنون.
احیانا ProGuard/R8 فعال نیست روی پروژه؟
سلام
سورس رو میشه بدید
بزرگوار انتهای مطلب یه کادر هست که با فونت درشت نوشته شده “دانلود فایل این آموزش با فرمت PDF به همراه سورس پروژه”
سلام چطوری میتونم مقادیر فرم سایتی رو که از طریق وب ویو باز شده رو در اکتیویتی های دیگ استفاده کنم؟
متوجه منظورتون نشدم
سلام وقت بخیر. بنده برنامه نویسی جاوا با اندروید استودیو کار میکنم میخوام خروجی کارمو بعد از هربار ران گرفتن روی مرورگر ببینم میشه لطفا آسون ترین راه و سریع ترین راه رو برای بنده معرفی کنید خیلی ممنون میشم.
منتظرم سپاس
اگه منظورتون استفاده از سرویس های کلود هست که گزینه هایی مثل Genymotion Cloud هستش اما اگه به صورت لوکال فرمودید که فکر نمیکنم همچین شبیه سازی باشه
سلام،ببخشید جچوری میشه داده های که ما در حین استفاده از وب ویو هستیم رو دریافت کرد فرمتش هم هرچی بخواد باشه مثلا شما دریک صفحه ای هستید اون لحظه داده رو قطع می کنید ولی اون صفحه هنوز هست اما مثلا یک حرکتی می کنید که به دلیل نداشتن اینترنت صفحه بسته میشه خب در اون لحظه می خواسته داده دریافت بشه من می خوام اون داده ها رو تو کدنویسی در یافت کنم ممنون
متوجه منظورتون نشدم بزرگوار
سلام ممنون از سایت خوبتون این خطا یعنی چی
res/values/styles.xml:2: error: Error parsing XML: not well-formed (invalid token)
https://stackoverflow.com/q/7089718
این فایل استیل من هست
@color/colorPrimary
@color/colorPrimaryDark
@color/colorAccent
هنگام خروجی گرفتن این خطا رو میده
res/values/styles.xml:1: error: Invalid start tag style
هر کجاش اشتباه هست بگید درستش کنم
ممنون
اگه به این فایل دست نزدید که نباید ایرادی داشته باشه و قاعدتا با Rebuild Project (منوی Build) مشکل حل میشه. ولی اگه تغییرش دادید، یه پروژه جدید بسازید و محتویات styles.xml رو از اونجا کپی کنید داخل پروژه اصلی. یا یکی از سورس های داخل سایت رو دانلود کنید و محتویات این فایل رو کپی کنید ازش
سلام
کدی هست که قرار بدیم برای لینک های خارجی سایت (هر لینکی غیر از لینک خودمون)
که وقتی کاربر توی برنامه روی اون لینک خارجی کلیک میکنه با مرورگر باز بشه نه داخل وب ویو
من خیلی گشتم درمورد
عذرخواه بابت تاخیر. لینک زیر رو بررسی بفرمایید:
https://stackoverflow.com/q/17994750
سلام علیکم وقتتون بخیر و خوشی
بنده میخوام مقداری که داخل وب ویو هست را بدست بیاورم؟
منظورتون رو متوجه نمیشم بزرگوار
با سلام وقت بخیر
ممنون بابت اموزش خوبتون من دارم یک کتاب مینویسم ک متنشو میخوام تو قالب html بنویسم (نمیخوام صفحه html به صورت از پیش ساخته شده رو پوشه asset قرار بدم) تکه کد رو در انتها میزارم
مشکلم اینه ک میخوام عکس و لینک و متن رو در دیتابیس بزارم و در وب ویو نمایش بدم منتهی عکس و لینک نمایش داده نمیشه
لینک سفید میشه و ری اکشنی نداره البته تو شبیه ساز امتحان کردم
عکس هم بالا نمیاد کلا
میخواستم بدونم وب ویوو قدرت خوندن کد های html رو داره ؟
تکه کد من در دیتا بیس:
در ۳ سپتامبر ۲۰۱۳ توسعهدهندگان اندروید بهطور رسمی اعلام کردند که با شرکت نستله، که از شرکتهای مطرح صنعت شکلاتسازی جهان میباشد، همکاری خواهند کرد. در همین راستا نگارش ۴٫۴ سیستمعامل اندروید، کیتکت نام گرفت. کیت کت از مارکهای معروف شکلات است که توسط شرکت نستله تولید میشود.
تست لینک گوگل
نمیدونم تونستم سوالمو واضح بپرسم یا نه
اگر کمکم کنید خیلی خیلی ممنونتون میشم 🙂
سوالتون خیلی واضح نبود برام. ولی اینکه فرمودید “میخواستم بدونم وب ویوو قدرت خوندن کد های html رو داره؟” خب وب ویو برای خوندن صفحات HTML ـه دیگه
برای بلاک کردن تبلیغات داخل وب ویو باید چیکار کنیم؟
چیزی که الان به ذهنم میرسه اینه که با CSS و display:none غیر فعالشون کنید
سلام وقت بخیر
خیلی ممنون از آموزش های کاربردی شما
فقط مسئله من این است که وقتی روی لینکی کلیک میکنم و در قالب خود وب ویوو نمایش داده میشود به محض برگشت به عقب کلا از برنامه خارج میشود ممنون میشم راهنمایی کنید
https://www.tutorialspoint.com/how-to-enable-back-button-in-android-webview
https://stackoverflow.com/a/6077173
سلام ممنون از آموزش های خیلی خوبتون. من تمام نکات رو مو به مو اجرا کردم داخل وب ویو مشکلم اینجاست که سایتم رو اندروید ۴٫۲ لود نمیشه و ارور میده webpage not available ولی تو ورژن های بالاتر مشکلی نداره. علتش چیه و چطوری رفع میشه؟ ممنون
بعید میدونم غیر از قطع بودن اتصال اینترنت مشکل دیگه ای داشته باشید روی این دیوایس
سلام
روی اندروید ۱۰ وب ویو باز نمیکنه سایت رو چرا؟
نمیدونید مشکلش چیه؟
فقط هم روی اندروید ۱۰ باز نمیکنه!خود نرم افزار مشکلی ندارها فقط قسمت وب ویوش صفحه رو بارگزاری نمیکنه
من تست کردم روی اندروید ۱۰٫ مشکلی نبود. مطمئن بشید اتصال اینترنتش برقراره
سلام
ممنون به خاطر آموزش های خوبتون?
برای وب سایت های فروشگاهی، صفحه پرداخت امنیت داره با این سورس؟
و میشه که صفحه پرداخت رو با مرورگر گوشی باز کنه و بعد از پرداخت برگرده به اپ؟
تو بحث امنیت که نباید مشکلی باشه چون درگاهها روی https هستن و اطلاعات کد شده رد و بدل میشن
مورد دوم هم دو لینک زیر رو مطالعه کنید:
https://stackoverflow.com/questions/4229494/webview-link-click-open-default-browser
https://discourse.nativescript.org/t/how-to-make-links-in-a-webview-to-open-in-the-default-browser/945/2
سلام
برای کار با فایلها و فولدرهای روی هاست که حفاظت شده هستند باید چکار کنیم
منظورتون رو متوجه نشدم. کاملتر توضیح بدید
سلام مجدد مثلا برای یکی از فایلهای php داخل هاست اجازه دسترسی تعریف کرده ام (رمز عبور و نام کاربری) می خواهم از طریق webview این فایل را بصورت اتوماتیک اجرا کنم بطوریکه نام کاربری و رمز عبور را در webview وارد کنم چکار باید بکنم؟
این مورد رو تست نکردم. یوزر پسورد نمیگیره؟ یه سرچ بکنید مثلا
login php protected page in android webview
باسلام بسیار بسیار ممنون آموزش بسیار کاربردی و عالی بود.
یه مسئله چرا بعد از خروجی گرفتن apk و انتقال بر روی گوشی جهت نصب برنامه رو ویروس شناسایی میکنه سپر گوگل؟! چطور میشه رفع کرد این مشکل رو؟
ویروس شناسایی میکنه یا منبع نامعتبر؟ اگه گزینه دوم هست که خب طبیعیه و باید نصب از منبع نامعتبر رو اجازه بدید به دیوایس
سلام وقت بخیر با سپاس از آموزش بسیار کاربردی و تکمیلتون.
وقتی خروجی میگیرم میخوام نصب کنم رو گوشی ویروس شناسایی میکنه سپر امنیتی گوگل ، چگونه می توان این مشکل رو رفع کرد؟ چون میخوام برنامه ای که میسازم رو بفرستم بقیه هم نصب کنن ، اگه ویروس شناسایی بشه کسی نصب نمیکنه!
در صورت امکان راهنمای بفرمایید بزرگوار
شاید داخل صفحه وب کدی هست که به عنوان ویروس شناخته میشه
عالی بود اگر امکان داره راجع به امنیت وب ویو هم مطلب بزارید.
سپاس
چشم. سر فرصت ان شا الله
خیلی کامل و دقیق توضیح دادین
واقعا متشکرم
خسته نباشید
سلام جناب مهندس سوالی داشتم.در پکیج آموزشیتون زوم کردن بر روی عکسی که توسط لایبراری picasso در اپلیکیشن باز شده هم وجود داره یه راهنمایی بفرمایید .منظورم این هست که زوم کردن بر روی عکسی که از طریق سرور لود شده چگونه است؟ ممنون.تشکر..
خیر در مورد کتابخانه پیکاسو هنوز آموزشی تهیه نکردم. یه سرچ بکنید حتما آموزشش رو پیدا میکنید
با سلام اگر در مثال بالا بجای آدرس https://android-studio.ir آدرس http://domain.com/t.html که محتوای آن نمایش یک نقشه ساده از گوگل می باشد قرار دهم و با شبیه ساز جنی موشن آنرا اجرا کنم نقشه نمایش داده نمی شود و خالی و سفید است ولی در محیط مرورگر اجرا میشود مشکل چیست راهنمائی بفرمائید.یعنی آدرسهای غیر نقشه گوگل API مشکلی ندارند.
با یه دیوایس فیزیکی هم تست کنید. اگه بازم جواب نداد در موردش سرچ کنید
google map not showing in android webview
سلام.روزتون بخیر.من برنامه اندرویدی رو نوشتم که صفحه ی وب رو بدون مشکل باز میکنه.اما اون صفحه ی وب تبلیغات و پاپ اپ های زیادی داره و بعضی وقت ها به صفحات دیگه ریدایرکت میشه و باعث مشکا ui میشه.چطوذ میشه جلو این ریدایرکت ها و تبلیغات رو گرفت؟؟؟
خب صفحه ای که پاپ آپ داره اصن منطقی نیست بخواد برای WebView استفاده بشه. صفحتون رو خلوت کنید
با سلام
من این برنامه رو مو به مو نوشتم ودسترسی اینترنت رو هم اوکی کردم .
ولی موقع اجرا رو nox بدون هیچ مشکلی کار میکنی .
ولی رو گوشی خودم که اجرا میکنم . فورس کلوز میده .
دلیلش چیه واقعا ؟؟؟
Logcat رو بررسی کنید. ممکنه یک متد با API Level دیوایس مربوطه سازگاری نداشته باشه
اصلا ربطی به استفاده از وب ویو نداره من با اندروید استدیو ۴.۱ هر وقت لینک میدم روی box بدون مشکل باز میکنه ولی رو گوشی فورس کلوز میده نسخه قبلی اندروید استدیو این مشکل رو نداشتم نمدونم چرا اینجوری میشه
اگه کسی میدونه رانمایی کنه ممنون