السلام عليكم ورحمة الله وبركاته
الشرح
اولا : تضيف (webview) في صفحة التصميم وهي (VIEW) .
* نبذوة مختصرة على (webview) في نهاية الشرح .
ثانيا : نتوجه الى الصفحة الخاصة بأضافة المكونات وهي (COMPONENT) فنضيف مكون (FilePicker) ونقوم بتسميته (fp) ونختار من السهم االمقابل لصندوق الادخال IMAGES FILES .
ثالثا : نتوجه الان الى حدث (onCreate) فنضيف عن طريق operator اخر بلوك وهو (add source directly) مع اضافة رابط محرك البحث في بلوك setText كما موضح بالصورة القادمة .
في هذه التدوينة اقدم لكم فيها كيف تقوم بصنع تطبيق من خلال هذا التطبيق تقوم برفع ملفاتك فيه لكن الرفع راح يكون على احدى موقع الرفع مثلا ( ميديا فاير ، دروبكس ، ... ) لكن هذه التطريقة لا يمكن عملها بطريقة بأستخدام البلوكات الموجودة في التطبيق وانما تحتاج الى بعض الاكواد لعملية رفع الملفات فنبدأ بالشرح على بركة الله .
الشرح
اولا : تضيف (webview) في صفحة التصميم وهي (VIEW) .
* نبذوة مختصرة على (webview) في نهاية الشرح .
ثانيا : نتوجه الى الصفحة الخاصة بأضافة المكونات وهي (COMPONENT) فنضيف مكون (FilePicker) ونقوم بتسميته (fp) ونختار من السهم االمقابل لصندوق الادخال IMAGES FILES .
ثالثا : نتوجه الان الى حدث (onCreate) فنضيف عن طريق operator اخر بلوك وهو (add source directly) مع اضافة رابط محرك البحث في بلوك setText كما موضح بالصورة القادمة .
webview1.setWebChromeClient(new
WebChromeClient() {
// For 3.0+ Devices
protected void openFileChooser(ValueCallback uploadMsg, String acceptType) { mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*"); startActivityForResult(Intent.createChooser(i, "File Browser"), FILECHOOSER_RESULTCODE);
}
// For Lollipop 5.0+ Devices
public boolean onShowFileChooser(WebView mWebView, ValueCallback filePathCallback, WebChromeClient.FileChooserParams fileChooserParams) {
if (uploadMessage != null) {
uploadMessage.onReceiveValue(null);
uploadMessage = null; } uploadMessage = filePathCallback; Intent intent = fileChooserParams.createIntent(); try {
startActivityForResult(intent, REQUEST_SELECT_FILE);
} catch (ActivityNotFoundException e) {
uploadMessage = null; Toast.makeText(getApplicationContext(), "Cannot Open File Chooser", Toast.LENGTH_LONG).show(); return false; }
return true; }
//For Android 4.1 only
protected void openFileChooser(ValueCallback uploadMsg, String acceptType, String capture) {
mUploadMessage = uploadMsg; Intent intent = new Intent(Intent.ACTION_GET_CONTENT); intent.addCategory(Intent.CATEGORY_OPENABLE); intent.setType("image/*"); startActivityForResult(Intent.createChooser(intent, "File Browser"), FILECHOOSER_RESULTCODE);
}
protected void openFileChooser(ValueCallback uploadMsg) {
mUploadMessage = uploadMsg; Intent i = new Intent(Intent.ACTION_GET_CONTENT); i.addCategory(Intent.CATEGORY_OPENABLE);
i.setType("image/*"); startActivityForResult(Intent.createChooser(i, "File Chooser"), FILECHOOSER_RESULTCODE);
}
});
* (webview1) هو الايدي الخاص بالحاجة (webview) التي اضفتها في صفحة التصميم وهي (VIEW)
رابعا : الان نتوجه الى الصفحة الخاصة بأذاضة المكونات وهي (COMPONENT) ونضغط على المكون الذي انشأناه وهو FilePicker ومن خلال الخيارات التي ستظهر نضغط على (onFilesPicked) فبعد الدخول نتوجه الى operator ونضيف اخر بلوك وهو (add source directly) ونضيف الكود التالي كما موضح بالصورة القادمة .
}
break;
case REQUEST_SELECT_FILE:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (uploadMessage == null) return; uploadMessage.onReceiveValue(WebChromeClient.FileChooserParams.parseResult(_resultCode, _data)); uploadMessage = null; }
break;
case FILECHOOSER_RESULTCODE:
if (null == mUploadMessage){
return; }
Uri result = _data == null || _resultCode != RESULT_OK ? null : _data.getData(); mUploadMessage.onReceiveValue(result);
mUploadMessage = null;
if (true){
خامسا : نتوجه الى صفحة الحجدث وهي (EVENT) ونضغط على اخر خيار المختص باضفة الكتل الاضافية (MOREBLOCK) فنضيف كتلة اضافية بأسم (extra) فبعد الانشاء ندخل اليها ونضيف الكود التالي كما موضح بالصورة القادمة .
}
private ValueCallback mUploadMessage;
public ValueCallback uploadMessage;
public static final int REQUEST_SELECT_FILE = 100;
private final static int FILECHOOSER_RESULTCODE = 1;
{
سادسا : بعد الانتهاء من الخطوات اعلاه تقوم بتجميع التطبيق وذلك بالضغط على زر (Run) الموجود في صفحة التصميم وهي (VIEW) .
* نبذوة مختصرة عن (webview) .
هي عبارة عن حاجة تستخدمها لتصفح مواقع الانترنت او من خلالها تستطيع صنع تطبيق لموقعك او قناتك وذلك من خلال اضافة البلوك الخاص بها ومن خلالها تستطيع انشاء متصفح فلا يخلو اي تطبيق هذه الحاجة فوجوب وجودها .
* نبذوة مختصرة عن مكون (FilePcker) .
يستخدم هذا المكون للوصول للمفات وبأنواعها (صورية ، نصية ، صوتية ، الخ .. ) وتطبيق بعض الاوامر عليها من خلال الحدث الذي يخص هذا المكون وكما موضح في موضوع هذه التدوينة فهذا امر من اوامر كثيرة يمكنك تطبيقها من خلال هذا المكون ولكن الغرض الاساس او بشكل اوضح عند اختيارك لصورة او ملف صوتي او اي ملف اخر فمن خلال بلوكات معينة نحصل على موقع الملف في الجهاز ونطبق اوامر معينة على هذا الملف .
* نبذوة مختصرة عن حدث (oncreate) .
يستخدم هذا الحدث لتنفيذ الاوامر الموجودة فيه عند فتح التطبيق في حال كانت الصفحة هي الصفحة الرئيسية وكذلك ينفذ الاوامر الموجودة فيه عند التنقل بين الصفحات واقصد هنا مثلا انتقلنا الى صفحة معينة ورجعنا الى الصفحة الرئيسية فيقوم بتنفيذ الاوامر مرة اخرى .
* نبذوة مختصرة عن بلوك (ASD) .
او ما يسمى بـ add source directly يستخدم هذا في اضافة الاكواد اليه وهذا البلوك عوضاً عن البلوكات الغير موجودة فمثلاً بلوك لتغيير حجم الخط غير موجود في النسخة الاصلية وفتمت اضافة هذا البلوك للتعويض عن البلوكات الغير موجودة فهذا الغرض من هذا البلوك .
* نبذوة مختصرة عن بلوك (setText) .
هذا البلوك شائع الاستخدام في تطبيقات كثيرة ويستخدم هذا البلوك لتعيين الخط فمن الامثلة على استعمال هذا البلوك يستعمل في تطبيقات الشات فمثلا كتبنا رسالة معينة وعند ارسالها يتفرغ صندوق الادخال تلقائياً وسبب ذلك هو كتبتنا للامر التالي :
;("")box.setText
فتلاحظ انه لا يوجد شيء بين العلامتين وهذا يعمل على جعل الصندوق فارغ .
> اتمنى الشرح مفهوم السلام عليكم ورحمة الله