2011-12-23 16 views
0

apkの名前に言及せずに、SDカードからapkをプログラムでインストールしようとしています。私が今できることは、自分のコードで指定したapkをインストールできることです。私のデバイスに別のapkをインストールしたいのであれば、それは便利ではありません。私は自分のコードに入り、apkの名前を変更する必要があります。実行時にapkファイルの名前を動的に取得する方法はありますか?たとえば、インストール可能なapkのリストを取得して、インストールするAPKを選択できるようにするには? apkの名前を定義せずにapkをプログラムでインストールする

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(
Uri.parse("file:///mnt/sdcard/extsd/download /app.apk"), 
"application/vnd.android.package-archive"); 
startActivity(intent); 

はメリークリスマス!!! "事前にありがとうございます!!!すべての開発者と視聴者に

答えて

2

更新:以前のコードは、エラーが含まれているため、削除されたここでの作業コードは次のとおりです。

public class InstallAPKActivity extends Activity { 
    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     ExtFilter apkFilter = new ExtFilter("apk"); 
     File file[] = Environment.getExternalStorageDirectory().listFiles(apkFilter); 
     Log.d("InstallApk", "Filter applied. Size: "+ file.length); 

     for (int i=0; i < file.length; i++) 
     { 
      Log.d("InstallApk", "FileName:" + file[i].getName()); 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setDataAndType(Uri.fromFile(file[i]), "application/vnd.android.package-archive"); 
      startActivity(intent); 
     } 





    } 

    class ExtFilter implements FilenameFilter { 
     String ext; 
     public ExtFilter(String ext) { 
      this.ext = "." + ext; 
     } 
     public boolean accept(File dir, String name) { 
      return name.endsWith(ext); 
     } 
    } 
} 

アップデート2: このプログラムは、単純にすべてのapkファイルを列挙し、ファイルの配列にそれらを書き込み、それは順次、すべてこのAPKファイルをインストールしようとした後、そのインスタンスの、私の場合、私は上のアプリケーションgolddream.apkを置きます。私のエミュレータのsdcardです。私は私のlogcatで次の出力を参照10. SDKのV用に開発された:

12-21 06:44:39.453: D/InstallApk(14897): Filter applied. Size: 1 
12-21 06:44:39.453: D/InstallApk(14897): FileName:golddream.apk 
12-21 06:44:39.463: I/ActivityManager(62): Starting: Intent { act=android.intent.action.VIEW dat=file:///mnt/sdcard/golddream.apk typ=application/vnd.android.package-archive cmp=com.android.packageinstaller/.PackageInstallerActivity } from pid 14897 
12-21 06:44:40.073: I/ActivityManager(62): Displayed com.android.packageinstaller/.PackageInstallerActivity: +578ms (total +1s229ms) 
+0

Uri.parse(ファイルを[i]を.getAbsolutePath()、 "アプリケーション/ vnd.android.package-アーカイブ"));解析中のエラーです。解析文字列と一致するように引数を削除します。変数iも宣言されていない。それはクラス変数かローカルでなければならないのですか? – chandanmahmud

+0

ありがとうございました。それはかなり感謝していた。コードにエラーはありません。エミュレータでコードをテストすることは可能ですか? – chandanmahmud

+0

実際の電話がないので、エミュレータでテストしました。 – Yury

関連する問題