【问题标题】:Android how to start activity on Boot-upAndroid如何在启动时启动活动
【发布时间】:2013-06-23 07:43:47
【问题描述】:

让我描述一下我想要什么:我想构建一个“主应用程序”并将其设置为当手机通电时,它立即进入主应用程序。用户永远无法退出此应用(这将用于家长控制等),并且只能从其中启动其他应用。

基本上它就像一个“自定义桌面”。

我必须强调,这个应用永远不会退出是很重要的。只要手机启动,这是用户唯一可以访问的环境。

现在,在我解释了我需要什么之后,我需要你的帮助来告诉我我在寻找什么。这是我一直听说的某种“默认启动器”吗?或者这个怎​​么称呼? 我该怎么做?

谢谢

【问题讨论】:

  • 你不能做的应用程序永远不会退出它的恶意软件程序,这个功能限制了 android 4.0 到更高版本!
  • 我访问了 bootupservice
  • 我会说创建一个启动器应用程序并将其设为默认值。完成后,您可以使用正确的权限控制几乎所有内容
  • @Dediqated:怎么做?
  • 我认为您无法在 Android 4.0 或更高版本上启动应用程序。如果您的应用在手机关机时处于活动状态,该应用将在下次开机时自动启动。

标签: android


【解决方案1】:

将此添加到清单中。

<receiver
            android:name=".Bootupclass"
            android:enabled="true"
            android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >

</receiver>

启动类

public class Bootupclass extends BroadcastReceiver{

    @Override
    public void onReceive(Context context, Intent intent) {
        //write intent here 
    }

}

【讨论】:

  • 我应该在onReceive 内启动我的活动?还有,以后怎么卸载?
  • 安装相同的应用或不同的应用
  • 好的,我接受了你的回答,因为它符合我的帖子标题所说的那样,但它不会让我的应用成为启动器
  • 谢谢,试试这个
【解决方案2】:

问题正文中询问的内容与问题标题不同。

收听BOOT_COMPLETED 将按照标题的要求执行 - 在设备开机或重新启动时将控制权交给应用程序。

仅仅实现真正的目标是不够的——阻止用户退出应用程序并进入“正常”主屏幕——一旦用户按下“退出”或“主页”,他就会离开你的应用程序。虽然您可以拦截“退出”按钮并阻止它退出您的应用,但无法以编程方式阻止“主页”按钮。

为了制作和应用类似家长控制并防止用户访问不需要的应用,您需要实施“自定义主屏幕”或“自定义启动器”(这是同一件事)。

这是一个相当大的话题,但这似乎是一个很好的起点:Android - creating custom launcher

由于作者坚持使用“精确代码”,要让您的应用启动而不是主屏幕(在启动或按下“主页”按钮后),您需要在清单中添加以下内容:

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT" />
    </intent-filter>

安装后,按“主页”按钮 - 您可以选择标准启动器或您的应用程序。选中“默认使用”并选择您的应用 - 从现在开始,它将启动而不是正常的主屏幕。

但请注意,自定义启动器几乎没有已知问题。一个是 - 您必须阻止对设置的访问,否则用户可以切换回默认启动器。此外,在您的应用程序更新后(即您发布新版本),用户将被询问要使用哪个主屏幕,并且可以选择默认启动器。

【讨论】:

    【解决方案3】:

    我需要有人给我制作应用程序所需的确切代码:

    来了,

    如果您将应用程序作为启动器应用程序,并且它是您系统中唯一的启动器应用程序,那么它当然会在您打开设备时启动。此外,当您单击主页按钮时,由于您的应用是系统内唯一的启动器应用,因此也会启动。

    所以,

    1) 在启动时启动 2) 是按下主页按钮(“桌面”)时的默认操作

    都可以合并为 1。

    你提到你的手机已经root了,所以最简单的方法就是

    1. 仅在清单中使用这些行来安装您的应用。即在您的第一个活动中。没有其他要求。 (这将使您的应用成为启动器应用)

    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.HOME"/>
        <category android:name="android.intent.category.DEFAULT" />
        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    

    2.在您的设备中卸载默认启动器应用程序。

    【讨论】:

    • 最终我设法让它与这个精确的解决方案一起工作,一切都很好。
    【解决方案4】:

    I must stress out, it is important that this app never exits我相信这是不可能的。

    根据您的要求,您似乎需要 MDM 解决方案。 Android 2.2 以上的设备管理 API 已经可用。查看http://developer.android.com/guide/topics/admin/device-admin.html

    用户必须安装您的应用并允许其成为设备管理员。 (您可以从设置 -> 位置和安全 -> 设备管理员查看当前可用的管理员)。现在,作为管理员,您可以控制设备上的功能,例如。禁止卸载应用程序,阻止安装特定应用程序,禁止启动特定应用程序。如果安全受到破坏等情况下擦除设备。您还可以防止您的应用被卸载。

    存在具有此类功能的应用程序。我可以在脑海中命名 Maas360。 免责声明:我自己没有尝试过设备管理api。

    【讨论】: