عارض أندرويد في كوردوفا

من موسوعة حسوب
< Cordova
مراجعة 11:19، 26 ديسمبر 2018 بواسطة محمد-بغات (نقاش | مساهمات) (أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE:عارض أندرويد في كوردوفا}}</noinclude> تصنيف: Cordova تصنيف: Android يوضح هذا المجلد ك...')
(فرق) → مراجعة أقدم | المراجعة الحالية (فرق) | مراجعة أحدث ← (فرق)
اذهب إلى التنقل اذهب إلى البحث

 يوضح هذا المجلد كيفية تضمين مُكوّن (component) عارض كوردوفا داخل تطبيقات أندرويد الكبيرة. للمزيد من التفاصيل حول كيفي يمكن أن تتوصل هذه المكونات مع بعضها، راجع إضافات التطبيق.

إذا لم تكن لديك خبرة بمنصة أندرويد، فعليك الاطلاع أولًا على [index.html Android Platform Guide]، وتثبيت أحدث إصدار من إطار العمل SDK الخاص بأندرويد قبل محاولة اعتماد طرق متقدمة لتضمين العوارض. بدءًا من الإصدار 1.9 من كوردوفا، صارت منصة أندرويد تعتمد على المُكوِّن CordovaWebView، والتي بُنِيت على مُكوِّن قديمٍ من CordovaActivity كان معمولًا به قبل الإصدار 1.9.

  • لاتباع هذه التعليمات، تأكد من أنّ لديك أحدث توزيعة من كوردوفا. نزِّلها من cordova.apache.org، وفُكَّ ضغط حزمة أندرويد الموجودة فيها.
  • انتقل إلى مجلد حزمة أندرويد /framework، ونفِّذ الأمرَ ant jar. والذي سيُنشئ الملف .jar الخاص بكوروفا، على الشكل /framework/cordova-x.x.x.jar.
  • انسخ الملف .jar إلى مجلد مشروع أندرويد /libs .
  • أضف المُدخلات التالية إلى الملف /res/xml/main.xml الخاص بالتطبيق، مع تعديل layout_height و layout_width و id لتتناسب مع التطبيق:
<org.apache.cordova.CordovaWebView
    android:id="@+id/tutorialView"
    android:layout_width="match_parent"
    android:layout_height="match_parent" />
  • قم بتعديل النشاط لكي يقدم CordovaInterface. يجب أن يقدم التوابع المُتضمّتة. قد ترغب في نسخها من /framework/src/org/apache/cordova/CordovaActivity.java، أو يمكنك تقديمها على النحو الذي تشاء. تعرض الشيفرة البرمجية التالية تطبيقًا بسيطًا يعتمد على الواجهة. لاحظ كيف يتطابق مُعرِّف العارض المشار إليه من قبل السمة id المحددة في ملف XML الموضح أعلاه:
public class CordovaViewTestActivity extends Activity implements CordovaInterface {
    CordovaWebView cwv;
    /* Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        cwv = (CordovaWebView) findViewById(R.id.tutorialView);
        Config.init(this);
        cwv.loadUrl(Config.getStartUrl());
    }
  • إذا كان التطبيق يحتاج إلى استخدام الكاميرا، فعليك تنفيذ ما يلي:
@Override
public void setActivityResultCallback(CordovaPlugin plugin) {
    this.activityResultCallback = plugin;
}
/**
 * Launch an activity for which you would like a result when it finished. When this activity exits,
 * your onActivityResult() method is called.
 *
 * @param command           The command object
 * @param intent            The intent to start
 * @param requestCode       The request code that is passed to callback to identify the activity
 */
public void startActivityForResult(CordovaPlugin command, Intent intent, int requestCode) {
    this.activityResultCallback = command;
    this.activityResultKeepRunning = this.keepRunning;
    // If multitasking turned on, then disable it for activities that return results
    if (command != null) {
        this.keepRunning = false;
    }
    // Start activity
    super.startActivityForResult(intent, requestCode);
}
@Override
/**
 * Called when an activity you launched exits, giving you the requestCode you started it with,
 * the resultCode it returned, and any additional data from it.
 *
 * @param requestCode       The request code originally supplied to startActivityForResult(),
 *                          allowing you to identify who this result came from.
 * @param resultCode        The integer result code returned by the child activity through its setResult().
 * @param data              An Intent, which can return result data to the caller (various data can be attached to Intent "extras").
 */
protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
    super.onActivityResult(requestCode, resultCode, intent);
    CordovaPlugin callback = this.activityResultCallback;
    if (callback != null) {
        callback.onActivityResult(requestCode, resultCode, intent);
    }
}
  • أخيرًا، تذكر إضافة منظومة المهام الفرعية (thread pool)، وإلا فلن تكون هناك أي مهام فرعية لتشغّلها الأضافة:
@Override
public ExecutorService getThreadPool() {
    return threadPool;
}
  • انسخ ملفات HTML و JavaScript الخاصة بالتطبيق إلى مجلد مشروع أندرويد /assets/www.
  • انسخ الملف config.xml من /framework/res/xml إلى مجلد المشروع /res/xml.

مصادر

  • [hhttps://cordova.apache.org/docs/en/latest/guide/platforms/android/webview.html صفحة Android WebViews في توثيق كوردوفا الرسمي.]