下载安装apk报错
android.content.activitynotfoundexception:No Activity found to
handle intent { act=android.intent.action.VIEW dat=/data/data/
typ=application/vnd.android.package-archive flg=0x10000000 }
function OpenFile:Boolean; var apkPath:string; Intent:JIntent; begin apkPath := 'file://' + TPath.Combine(TPath.GetDownloadsPath,'papa.apk'); Intent := TJIntent.Create; Intent.addFlags(TJIntent.JavaClass.FLAG_ACTIVITY_NEW_TASK); Intent.setAction(TJIntent.JavaClass.ACTION_VIEW); Intent.setDataAndType(TJnet_Uri.JavaClass.parse(StringToJString(apkPath)),StringToJString('application/vnd.android.package-archive')); SharedActivity.startActivity(Intent); end;
关键是加上 file:// 就搞定了。。。
参考资料:
http://bbs.csdn.net/topics/392008234
http://www.cnblogs.com/liyiran/p/6289450.html
Delphi XE6开发的AndRoid应用实现在线升级完成后自动安装apk代码(加说明)
http://www.dfwlt.com/forum.php?mod=viewthread&tid=445
Android实例-IdHTTP下载(并实现自动安装)(XE10+小米2)
http://www.cnblogs.com/FKdelphi/p/5416941.html
还要补充的就是,调用指定浏览器打开网页:关键是setPackage方法,不过,也可以是setClassName方法,都可以的。
function openURL(AUrl:string):Boolean; var Intent:JIntent; begin Intent := TJIntent.JavaClass.init(TJIntent.JavaClass.ACTION_VIEW,TJnet_Uri.JavaClass.parse(StringToJString(AUrl))); Intent.setPackage(StringToJString('com.qihoo.browser')); SharedActivity.startActivity(Intent); end;
参考:http://www.cnblogs.com/devcjq/articles/7380606.html