在我的应用清单文件中,我已经声明了使用该权限:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
在我的代码中,我检查我的应用是否可以从未知来源安装:
public void reinstallApp(Activity activity, String pathname, int request_code)
{
if (activity.getPackageManager().canRequestPackageInstalls())
{
try
{
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(new File(pathname)), "application/vnd.android.package-archive");
activity.startActivityForResult(intent, request_code);
}
catch (Exception e)
{
LogUtilities.show(this, e);
}
}
else
{
activity.startActivity(new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(Uri.parse(String.format("package:%s", activity.getPackageName()))));
}
}
即使我在选择活动中检查了允许从未知来源安装,但 "activity.getPackageManager().canRequestPackageInstalls()" 总是返回 "false"。问题出在哪里?
exposed beyond app through Intent.getData()
。我认为这是因为.apk文件包含在我的应用程序中,而其他活动无法访问我的文件。 - Zdravko DonevgetPackageManager().canRequestPackageInstalls()
时,我会收到Java.Lang.SecurityException: '需要声明android.permission.REQUEST_INSTALL_PACKAGES以调用此API'
。 - Oiproks