سؤال

أحتاج إلى تطبيق Android الذي يجب أن يكون قادرًا على جلب البيانات من الويب (ربما .apk أو .jar) وإطلاق "شيء ما" منه.

إذا كانت فئة "تافهة" ، فلا توجد مشكلة على الإطلاق. هذا هو بلدي اللودر

package com.m31.android.urlload;

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.lang.ClassLoader;
import java.net.URL;

import dalvik.system.PathClassLoader;
import dalvik.system.DexClassLoader;


public class Loader extends ClassLoader {
    public Loader() throws IOException {
        super(Loader.class.getClassLoader());
    }

    public Class loadClass(String className) throws ClassNotFoundException {
         return findClass(className);
    }

    private String fetch_package(String url) throws IOException {
        BufferedInputStream in = new BufferedInputStream(new URL(url).openStream());
        FileOutputStream fos = new FileOutputStream("/mnt/sdcard/_plugins/plugin1.jar");
        BufferedOutputStream bout = new BufferedOutputStream(fos,1024);
        byte data[] = new byte[1024];
        int count;
        while((count = in.read(data,0,1024)) > 0) {
            bout.write(data,0,count);
        }
        bout.close();
        in.close();
        return "/mnt/sdcard/_plugins/plugin1.jar";
    }

    public Class findMyClass(String className, String url) throws IOException, ClassNotFoundException {
        String path = fetch_package(url);
        DexClassLoader pcl = new DexClassLoader(path, "/mnt/sdcard/_dex/", null, this);
        return pcl.loadClass(className);


    }
}

المشكلة هي أن الكود الذي أريد تنفيذه يشبه إلى حد كبير تطبيق ، والذي يجب أن يكون له عرض "بسيط" وبعض التفاعل عليه.

أنا غير قادر على استدعاء طريقة "oncreate" في صفي الذي تم تنزيله.

أعتقد أنني ثلاثة شوارع:

  1. أبحث عن طريقة تقوم بتثبيت التطبيق بصمت ثم يقوم بتشغيله (هل هو ممكن؟) ؛
  2. بمساعدتك ، أفهم كيفية تهيئة "تطبيق" ثانٍ داخل واحد (مع R وجميع الأشياء الخاصة به) ؛
  3. أكتب برنامجي الرئيسي لجلب البيانات من الويب وبناء الصفحات ديناميكيًا.

لذلك ، أنا بالتأكيد بحاجة لمساعدتكم!

هل كانت مفيدة؟

المحلول

أنا متأكد من أنك لا تستطيع تثبيت تطبيق جديد بصمت. أيضًا ، لم أتمكن من العثور على أي طريقة لتسجيل نشاط جديد في تطبيق موجود في وقت التشغيل. أفترض أنه يمكنك كتابة مجموعة غلاف تمرر جميع المكالمات إلى أخرى تقوم بتحميلها ديناميكيًا ، لكن ذلك سيظل دون حل مشكلة القدرة على تحميل بيانات المورد.

في النهاية ، ربما ستحتاج على الأرجح إلى كتابة التعليمات البرمجية الخاصة بك لتجنب استخدام نظام موارد Android تمامًا (ممكن ولكن صعب) ، أو مجرد الذهاب مع WebView و HTML مع JavaScript (من الصعب ذاكرة التخزين المؤقت وأقل المظهر الأصلي ، ولكن أبسط بكثير للتنفيذ) للبتاتية الديناميكية.

نصائح أخرى

أبحث عن طريقة تقوم بتثبيت التطبيق بصمت ثم يقوم بتشغيله (هل هو ممكن؟) ؛

لا، لم يكن ممكنا. ستكون هذه مشكلة أمنية.

بمساعدتك ، أفهم كيفية تهيئة "تطبيق" ثانٍ داخل واحد (مع R وجميع الأشياء الخاصة به) ؛

أظن أن ذلك سيكون في النطاق الصعوبة التي يمكن الازدهار.

أكتب برنامجي الرئيسي لجلب البيانات من الويب وبناء الصفحات بشكل دينامي.

هناك بالتأكيد أشياء تناسب هذا الوصف الذي يجب أن ينجح. أنا شخصياً أوصيك فقط باستخدام HTML5 ، ربما تستضيفه WebView ، لأن HTML هو حل مجرب وصنع لتوليد Dynamwory (كما توضح صفحة الويب هذه).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top