0

ボンジュール

Android 用のシンプルなマーケット アプリケーションを作成したいのですが、厄介な問題に直面しています。

インストールの流れは以下のとおりです。

1- アプリケーション コンテキストでの apk ファイルのダウンロード :

  InputStream input = new BufferedInputStream(url.openStream()) ;
  OutputStream output = openFileOutput("xx.apk", Activity.MODE_WORLD_READABLE);

  byte data[] = new byte[1024];

  while ((count = input.read(data)) != -1 && statusDownload ) {  
    output.write(data, 0, count);
 }

 output.flush();
 output.close();
 input.close();

2- ダウンロードが終了したら:

promptInstall = new Intent(Intent.ACTION_VIEW);             
File fileApk = new File (getFilesDir() + "/xx.apk");
promptInstall.setDataAndType(Uri.fromFile(fileApk) , Consts.APK_FILE_INSTALL_TYPE);
startActivityForResult(promptInstall,654);

3- インストール後 (またはキャンセルした場合)、apk ファイルは削除されます。

 File fileApk = new File (a.getFilesDir() + "/xx.apk" );
 fileApk.delete();

apk ファイルをインストールするには、「誰でも読み取り可能」である必要があります。これは、ファイルをダウンロードした後 (およびインストールする前) に、誰もが apk ファイルを取得できることを意味します。

外部ダウンロードを回避するための適切なアクセス許可を設定する方法を知っている人はいますか?

読んでくれてありがとう !

4

1 に答える 1

1

外部ダウンロードを回避するための適切なアクセス許可を設定する方法を知っている人はいますか?

あなたはすでに「適切な権限」を持っています。インストーラーはユーザーのプロセスとは別のプロセスで実行されるため、ファイルを読み取れる必要があります。このためにインストーラーだけにアクセス許可を与える方法がないため、可能なすべてのプロセスに読み取りアクセス許可を与える必要があります。

ほとんどの場合、ContentProviderこの制限を回避するために a を使用します。残念ながら、少なくとも 1 年前の時点では、インストーラーはcontent:// Uriをサポートしていませんでした。

于 2013-05-07T11:19:30.200 に答える