3

私は現在、更新マネージャーとして機能するアプリを開発しています。これまでのところ、他のアプリをインストールまたは更新するたびに、このアプリはうまく機能しています。これらのアプリはすべて data/app フォルダーにインストールされており、installpackage() メソッドで android.content.pm.IPackageManager クラスを使用してインストールしました。

内部メモリ (1 GB)、内部 SDCARD (4 GB)、および外部 SD カード (8 GB) を備えたコスト ROM に取り組んでいます。すべてのアプリが data/app フォルダーにインストールされているため、内部メモリの容量が不足しています! 同じ installpackage() メソッドを使用して、アプリを外部 SDCARD (または内部) にインストールできるかどうか疑問に思っていました。

アプリのインストール方法は次のとおりです。

 private Class<?> iPackageManagerStubProxyClass;

  iPackageManagerStubProxyClass = Class
 .forName("android.content.pm.IPackageManager$Stub$Proxy");



  public void installPackage(Uri uri) throws NoSuchMethodException,
  NumberFormatException, IllegalArgumentException, IllegalAccessException,
  InvocationTargetException, ClassNotFoundException {
  Log.i(LOG_TAG, "installing without deleting");
  Method method = getMethod(iPackageManagerStubProxyClass, "installPackage");
  method.invoke(packageManagerServiceProxy, uri, getPackageInstallObserver(),
  Integer.valueOf(INSTALL_REPLACE_EXISTING | INSTALL_INTERNAL), "");
  System.out.println(method);
  }

SDカードにアプリケーションをインストールするために同じことを行うことができないのではないかと疑い始めています。何か提案はありますか?そうでない場合、インストール後にアプリをプログラムでSDカードに移動できますか?

4

2 に答える 2

5

このコードを使用

 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        android:installLocation="preferExternal"
        ... >
于 2014-11-01T11:41:15.780 に答える
3

プログラムで外部SDカードにアプリをインストールする方法は?

これをプログラムで行う方法はありません。(今まで Android 7.0)

AndroidManifest.xmlファイル内でプロパティを定義する必要がありますandroid:installLocation

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    android:installLocation="preferExternal"
    ... >

次のいずれかの値を指定します。

"internalOnly" アプリケーションは、内部デバイス ストレージにのみインストールする必要があります。これが設定されている場合、アプリケーションは外部ストレージにインストールされません。内部ストレージがいっぱいの場合、システムはアプリケーションをインストールしません。これは、android:installLocation を定義しない場合のデフォルトの動作でもあります。

"auto" アプリケーションは外部ストレージにインストールされますが、システムはデフォルトでアプリケーションを内部ストレージにインストールします。内部ストレージがいっぱいの場合、システムはそれを外部ストレージにインストールします。インストールが完了すると、ユーザーはシステム設定を介してアプリケーションを内部ストレージまたは外部ストレージに移動できます。

"preferExternal" アプリケーションは、外部ストレージ (SD カード) にインストールされることを優先します。システムがこの要求を受け入れるという保証はありません。外部メディアが利用できないか、いっぱいになっている場合、アプリケーションは内部ストレージにインストールされる可能性があります。インストールが完了すると、ユーザーはシステム設定を介してアプリケーションを内部ストレージまたは外部ストレージに移動できます。

詳細はこちら

于 2016-10-15T00:00:40.850 に答える