1

Webからデータ(おそらく.apkまたは.jar)をフェッチし、そこから「何か」を起動できるAndroidアプリケーションが必要です。

それが「些細な」クラスであれば、まったく問題はありません。これは私のローダーです

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」メソッドを呼び出すことができません。

私は3つの通りがあると思います:

  1. アプリケーションをサイレントインストールして実行する方法を探しています(可能ですか?)。
  2. あなたの助けを借りて、私は自分のアプリケーション内で2番目の「アプリケーション」を初期化する方法を理解しています(独自のRとすべてのものを使用)。
  3. Webからデータをフェッチし、ページを動的に構築するマスタープログラムを作成します。

だから、私は間違いなくあなたの助けが必要です!

4

2 に答える 2

1

アプリケーションをサイレントインストールして実行する方法を探しています(可能ですか?)。

いいえ、できません。それはセキュリティの問題になります。

あなたの助けを借りて、私は自分のアプリケーション内で2番目の「アプリケーション」を初期化する方法を理解しています(独自のRとすべてのものを使用)。

それは不可能ではない困難な範囲になると思います。

Webからデータをフェッチし、動的にページを作成するマスタープログラムを作成します。

確かに、この説明に当てはまるものが機能するはずです。個人的には、HTMLは動的にUIを生成するための実証済みのソリューションであるため(このWebページが示すように)、おそらくWebViewによってホストされているHTML5を使用することをお勧めします。

于 2010-08-12T18:52:03.360 に答える
0

新しいアプリを黙ってインストールすることはできないと確信しています。また、実行時に新しいアクティビティを既存のアプリケーションに登録する方法を見つけることができませんでした。動的にロードする別の呼び出しにすべての呼び出しを渡すWrapperActivityを作成できると思いますが、それでもリソースデータをロードできるという問題は未解決のままです。

最終的には、Androidリソースシステムの使用を完全に回避するようにコードを記述するか(可能ですが難しい)、JavaScriptを使用してWebViewとHTMLを使用する必要があります(キャッシュが難しく、ネイティブに見えませんが、はるかに単純です)実装する)動的ビット用。

于 2010-08-12T18:58:43.610 に答える