我有一个BroadcastReceiver
,我从服务器下载了一个 apk,当我捕捉到动作时,我DownloadManager.ACTION_DOWNLOAD_COMPLETE
使用
activity.startActivityForResult(my_intent, REQUEST_CODE)
现在我想在 a 中移动这个逻辑Service
并安装 apk,但是在服务内部我没有 Activity,我可以将上下文转换为从 getapplicationcontext() 获得的 Activity,但是我发现了上下文不能的错误被转换为 com.android.Activity
我怎样才能从这个服务运行 apk 的安装?
敌对用户的方法是调用startActivity()
而不是startActivityForResult()
. 这是对用户怀有敌意的,因为它会自动启动安装程序 UI,而您的服务不知道用户在前台做什么。打断用户不会让用户很开心。
一种相关的用户敌对方法是从服务开始您自己的活动,然后您自己的活动在那里调用startActivityForResult()
. 您可以使用Theme.Translucent.NoTitleBar
这样您自己的活动没有 UI,但是,同样,您将启动安装程序活动,这将中断用户。
用户友好的方法是Notification
在下载完成时引发。无论是把ACTION_INSTALL_PACKAGE
Intent
在Notification
本身,还是有通知启动活动,这反过来又来电startActivityForResult()
。这允许用户在用户想要时安装应用程序,这可能是也可能不是现在。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句