当我尝试打开文件时,应用程序崩溃了.它可以在Android Nougat下运行,但在Android Nougat上它会崩溃.当我尝试从SD卡打开文件而不是从系统分区打开文件时,它只会崩溃.一些许可问题?
示例代码:
File file = new File("/storage/emulated/0/test.txt");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "text/*");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent); // Crashes on this line
Run Code Online (Sandbox Code Playgroud)
日志:
android.os.FileUriExposedException:file:///storage/emulated/0/test.txt通过Intent.getData()暴露在app之外
编辑:
在定位Android Nougat时,file://不再允许使用URI.我们应该使用content://URI代替.但是,我的应用程序需要打开根目录中的文件.有任何想法吗?
我试图默默安装apk到系统中.我的应用程序位于/ system/app并成功授予权限"android.permission.INSTALL_PACKAGES"
但是我找不到任何地方如何使用此权限.我试图将文件复制到/ data/app并没有成功.我也试过使用这段代码
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(
Uri.parse("file:///sdcard/app.apk"),
"application/vnd.android.package-archive");
startActivity(intent);
Run Code Online (Sandbox Code Playgroud)
但是此代码打开标准安装对话框.如何在没有root的情况下以静默方式安装app android.permission.INSTALL_PACKAGES?
PS我正在编写一个应用程序,它会在第一次启动时将许多来自文件夹的apks安装到系统中(替换安装向导).我需要它来使固件更轻.
如果您认为我正在编写病毒:所有程序都安装在/ data/app中.权限Install_packages只能授予位于/ system/app中的系统级程序或使用系统密钥签名.所以病毒无法到达那里.
如上所述http://www.mail-archive.com/android-porting@googlegroups.com/msg06281.html应用程序如果具有install_packages权限,则可以进行静默安装.此外,您不需要Install_packages权限来安装软件包.另外还有http://www.androidzoom.com/android_applications/tools/silent-installer_wgqi.html
是否可以在后台以编程方式安装apk,或者用户是否必须接受安装.
我的方案是我希望我的员工都安装了相同的应用程序集.
当然,他们可以自己安装应用程序,但我希望他们至少安装一些应用程序.
我不是在谈论从市场上安装应用程序.
我想从我的应用程序安装apk文件.
我创建了一个包含按钮的应用程序,当我单击该按钮时,我应该安装另一个我存储在resources文件夹中的apk,这
是我做过的事情:
public void onClick(View v) {
// Intent intent = new Intent("com.google.zxing.client.android.SCAN");
// intent.setPackage("com.google.zxing.client.android");
// intent.putExtra("SCAN_MODE", "QR_CODE_MODE");
// startActivityForResult(intent, 0);
File file = new File("android.resource://com.app.barcodescanner/raw", "scan.apk");
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType(Uri.fromFile(file), "application/vnd.android.package-archive");
startActivity(intent);
}
Run Code Online (Sandbox Code Playgroud)
有任何想法吗 ?
请在这件事上给予我帮助
我一直试图让一个Android应用程序以编程方式在SD卡上安装APK,但我遇到了一些麻烦.
这就是我这样做的方式:
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setDataAndType("ApkFilePath...","application/vnd.android.package-archive");
activity.startActivityForResult(intent,5000);
Run Code Online (Sandbox Code Playgroud)
现在工作正常,它带来了包管理器,我可以控制在经理完成安装APK时要做什么.
但我遇到的问题是,如果在安装结束时用户单击"打开"而不是"完成",则不会调用"OnActivityResult"方法,因为管理器仍然存在....并且关于系统的另一个要求的另一个问题.
有没有办法知道用户何时在包管理器的末尾选择了"打开",或者是否有办法强制管理器只显示我希望它显示的按钮?
真的可以使用帮助,我到处搜索,似乎没有找到解决方案
我有一个启动活动并运行良好的Android应用程序.我需要其他开发人员能够将我的APK集成到他们的应用程序中,以便他们可以从他们的Android应用程序中启动我的APK中的活动.
有什么方法可以实现这一目标?
谢谢乔治
我有一个应用程序将由用户从公共网络服务器(在Android市场之外)安装.
所以我在webserver中托管了apk,并指示用户键入url来下载文件,然后"打开"下载的文件进行安装.
但是,几乎100%的用户都难以完成这些简单的任务(他们不熟悉技术......).
所以,我决定制作一个简化任务的网页.该页面包含一个大按钮,该按钮将:
下载文件非常简单,但现在我的问题是从浏览器打开"安装对话框"!
我完全是关于html/javascript的新手,我不知道该怎么做(或者即使这是可能的).
当您从Google Market安装应用程序时,您有一个安装按钮,可以下载并自动启动刚刚下载的apk的安装程序.它不会自动安装,只会自动启动刚刚下载的apk的安装程序.
如果您的本地服务器上有apk文件,是否可以使用类似的按钮?链接怎么样?
我在这里已经阅读了很多几乎相似的问题(比如这一个 如何在文件下载完成后自动安装APK(私有托管)或如何自动安装apk),但如果Google使用了某些东西,则没有解释任何答案特别针对其市场或是否可以使用特殊类型的链接强制安装程序从手机下载后自动启动?自动启动,不自动安装apk.
也就是说,当用户使用QR码阅读器扫描我的QR码或直接在浏览器中输入URL时,我的应用程序如何在下载后立即触发安装程序?
假设我执行以下操作:1.我在计算机上生成一个私钥2.我使用私钥签署我的应用程序3.我将我的应用程序提交到Google市场4.我将我的应用程序上传到我的网站.
当有人从Google Market下载我的应用程序时,会发生以下情况:a)该人将访问我的应用程序的Google Market URL b)他将下载到他的手机c)手机中的应用程序安装程序将自动启动,并且问他是否同意应用程序要求的许可.
当有人从我的网站下载我的应用程序时,会发生以下情况:a)该人将访问我的应用程序的Google Market URL b)他将其下载到他的手机c)手机中的应用程序安装程序将不会自动启动.
我不希望在没有用户干预的情况下安装应用程序,只是为了让安装过程在下载后自动启动.
我的问题是如何使c)发生,即使他下载相同的应用程序,使用相同的签名,但从我的网站?