- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在我的应用程序 list 中,我已声明该权限的使用:
<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”,即使我在选择 Activity 中检查了允许从未知来源安装。
有什么问题吗?
最佳答案
您必须先征求许可。为此,您必须从未知来源调用安装权限。我通过重新排列你的代码得到了答案。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if (!getPackageManager().canRequestPackageInstalls()) {
startActivityForResult(new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES).setData(Uri.parse(String.format("package:%s", getPackageName()))), 1234);
} else {
callInstallProcess();
}
} else {
callInstallProcess();
}
以上代码将位于您的 onCreate() 中。您可以验证结果。
@RequiresApi(api = Build.VERSION_CODES.O)
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 1234 && resultCode == Activity.RESULT_OK) {
if (getPackageManager().canRequestPackageInstalls()) {
callInstallProcess();
}
} else {
//give the error
}
}
在 callInstallProcess() 中进行安装的位置;
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);
}
不要忘记在 AndroidManifest.xml 中授予权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
关于android - 如何在 Android Oreo 中使用 PackageManager canRequestPackageInstalls?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47872162/
我是android编程的新手。我已经使用带有 MainActivity.java 和 ClassFragment.java 文件的 Eclipse 创建了一个应用程序。 ClassFragment 是
我开发了一个应用程序,我在其中启用了我们拥有的任何应用程序都可以手动安装 但我的问题是我只想启用我自己的包名而不是任何其他应用程序包名。 这是我用过的代码。 try { PackageMana
我正在尝试使用 Pacakge 管理器从设备中获取已卸载应用程序的列表。但是,代码返回所有已安装应用程序的列表。 // get a list of all installed apps
我想让所有有 intentlisteners 的应用程序 Intent.CATEGORY_HOME 所以基本上是启动器 我有这段代码: final Intent mainIntent = null;
我正在浏览 PackageManager API。我发现定义了以下常量: 1) GET_DISABLED_COMPONENTS 2) GET_DISABLED_UNTIL_USED_COMPONENT
为了解决问题,我想我会尝试重新安装Chocolatey软件包提供程序。似乎没有cmdlet可以删除或卸载程序包提供程序。我指的不是删除软件包源或软件包。我在Windows 10上使用PowerShel
我正在编写一个应用程序,它具有某种程度的模块化系统。它有一个核心应用程序和一些应用程序,这些应用程序由一个实现所需接口(interface)的 Service 组成。我关注了the guide创建 I
您好,我正在从我的应用程序中打开另一个应用程序。我想在对话框中显示另一个应用程序。那么我有什么选择。我正在尝试下面的代码... public class PictureGallery extends
我正在尝试使用自 API 1.0 以来可用的 Android PackageManager.setComponentEnabledSetting 问题是,我不明白如何正确使用它。我传递了一个包含包组件
如何编写一个 Android 应用程序来接收来 self 的 Yamaha YDP-113 电子钢琴的 MIDI 事件? 当我强制执行时,出现运行时错误: FATAL EXCEPTION: main
所以我找到了this有用的答案,它描述了需要使用哪些 Android 部件来检查 Android 应用程序是否已启用。我还阅读了链接的文档。 ApplicationInfo ai = getActiv
我的应用使用 WebView。从 L-preview 开始,引入了一个新的功能过滤器: FEATURE_WEBVIEW。声明您的应用只能安装在完全实现 android.webkit.* API 的设备
我正在使用 PackageManager.getApplicationLabel(ApplicationInfo) 获取应用程序名称。但是这个名称可能会根据设备区域设置和应用程序资源字符串而改变。 所
如果我使用下面的代码禁用 AndroidManifest.xml 中定义的静态 BroadcastReceiver,它会在重启后重新启用吗?它似乎不是,但文档没有说明是否应该。 final Compo
有没有办法判断我从 getApplicationIcon() 返回的 Drawable 是否是默认/内置图标? 例如,我的模拟器上安装了几个应用程序。 “Adobe Reader”有一个由 Adob
我正在查看 PackageManager 类的源代码,它和所有方法一样是抽象的。制造商是否应该为它编写一个真正的实现,或者我遗漏了什么? 最佳答案 PackageManager 的真正实现是位于 fr
我有一个 .java 文件: .... import android.content.pm.ApplicationInfo; import android.content.pm.PackageI
我正在 Android 中编写一个启动器,这是我一直试图修复一段时间但没有成功的问题。 我有下面的代码来查询在我的启动器最开始运行的所有 Activity ,比如 onResume()。 final
我在使用 PackageManager.getInstalledPackages() 方法时遇到了一个非常奇怪的情况。我第一次启动我的 Activity 时,我得到了所有已安装包的有效列表。但是我第二
我计划在亚马逊应用商店和 Google Play 上发布我的应用程序,并且我的应用程序中的某些内容需要根据应用程序是否从亚马逊应用程序商店安装而略有不同。如果我正确理解了 PackageManager
我是一名优秀的程序员,十分优秀!