2011-12-23 5 views
0

Я пытаюсь установить apk программно с SD-карты без упоминания имени 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

Update:. Предыдущий код был удален, потому что содержат ошибки Вот рабочий код:.

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); 
     } 
    } 
} 

Update 2:.. Эта программа просто перебирает весь файл АПК и записывает их в массив файл После этого он пытается установить все эти APK файлы последовательно, например, в моем случае я ставлю golddream.apk заявки на SD-карта моего эмулятора. разработанный для SDK против 10. Я вижу следующий вывод в моем LogCat:

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 (файл [я] .getAbsolutePath(), "приложение/vnd.android.package-архив")); ошибка при синтаксическом анализе, он говорит, что удалить аргумент для соответствия строке синтаксического анализа. а также переменная i не объявлена. он должен быть переменным класса или локальным? – chandanmahmud

+0

Большое спасибо за ваш ответ. Это было просто заметно. В коде нет ошибки. Можно ли проверить код в эмуляторе? – chandanmahmud

+0

Да, я протестировал его на эмуляторе, потому что у меня нет реального телефона) – Yury

Смежные вопросы