gpt4 book ai didi

java - 以编程方式安装 apk,无需定义 apk 名称

转载 作者:行者123 更新时间:2023-12-02 08:03:01 26 4
gpt4 key购买 nike

我正在尝试以编程方式从 SD 卡安装 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);

最佳答案

更新:之前的代码因包含错误而被删除。这是一个工作代码:

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 文件并将它们写入 File 数组。之后它会尝试按顺序安装所有这些 apk 文件。例如,在我的例子中,我将应用程序 golddream.apk 放在模拟器的 SD 卡上。该应用程序是为 SDK v 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)

关于java - 以编程方式安装 apk,无需定义 apk 名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8615338/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com