Android如何在开机时启动活动

4
让我描述一下我的需求:我想建立一个“主控应用程序”,并设置当手机电源启动时,它立即进入主控应用程序。用户不能退出此应用程序(这将用于类似家长控制的功能),他只能从其中启动其他应用程序。
基本上就像一个“自定义桌面”。
我必须强调,重要的是此应用程序永远不会退出。只要手机启动,这就是用户可以访问的唯一环境。
现在,在我解释清楚我的需求之后,我需要你的帮助告诉我我要找什么。这是我经常听到的“默认启动器”吗?或者怎么称呼?我该如何操作?
谢谢。

2
你不能做的应用程序将永远不会退出,它是恶意软件程序,并且此功能受限于Android 4.0及更高版本! - Stack Overflow User
我已经访问了启动服务。 - Poovizhirajan N
1
我会建议创建一个启动器应用并将其设置为默认。这样做后,您可以通过正确的权限控制几乎所有内容。 - Dediqated
@Dediqated:怎么做? - Bogdan Alexandru
我认为在Android 4.0或更高版本中无法在启动时启动应用程序。如果您的应用程序在手机关闭时处于活动状态,则应用程序将在下一次启动时自动启动。 - DXM
@BogdanAlexandru 只需在Google上搜索如何创建Android启动器应用程序,这是一种显示主屏幕的应用程序。你可以在其中控制用户可以看到和使用什么。我们不会给出详细的代码说明。请自己搜索和了解。如果还不够帮助,请针对具体问题提出新问题。例如,请查看此问题:https://dev59.com/sm445IYBdhLWcg3wdqOO - Dediqated
4个回答

6
将以下内容添加到清单文件中。
<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中启动我的Activity吗?另外,如何卸载应用程序? - Bogdan Alexandru
安装相同的应用程序还是不同的应用程序。 - Poovizhirajan N
好的,我接受了你的答案,因为它完成了我帖子标题所说的内容,但它并没有使我的应用程序成为启动器。 - Bogdan Alexandru
谢谢,尝试这个 <category android:name="android.intent.category.HOME"/> - Poovizhirajan N

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. 卸载您设备中的默认启动器应用程序。


最终我成功地使用了这个确切的解决方案,一切都很好。 - Bogdan Alexandru

1
问题主体中所询问的与问题标题不同。
监听 BOOT_COMPLETED 将按照标题请求字面上执行 - 在设备开机或重新启动时仅一次将控制权转交给应用程序。
这还不足以实现真正的目标 - 防止用户退出应用程序并进入“正常”主屏幕 - 一旦用户按下“退出”或“主页”按钮,他就会离开您的应用程序。虽然您可以拦截“退出”按钮并防止其退出您的应用程序,但无法通过编程方式阻止“主页”按钮。
为了制作类似于家长控制的应用程序并防止用户访问不需要的应用程序,您需要实现“自定义主屏幕”或“自定义启动器”(它们是相同的)。
这是一个相当大的话题,但这似乎是一个很好的起点:Android-创建自定义启动器
因为作者坚持要求“确切代码”,所以在清单中需要以下内容才能使您的应用程序在启动或按下“主页”按钮后启动:
    <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>

安装完成后,请按“主页”按钮 - 您将被提供标准启动器或您的应用程序选择。勾选“设为默认”并选择您的应用程序 - 从现在开始,它将代替正常的主屏幕启动。
但需要注意的是,自定义启动器存在一些已知问题。其中之一是 - 您必须阻止访问设置,否则用户可以切换回默认启动器。此外,在您的应用程序更新后(即您发布新版本),用户将被要求选择使用哪个主屏幕,并可以选择默认启动器。

1

我必须强调,这个应用程序永远不能退出很重要,但我认为这是不可能的。

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

用户将需要安装您的应用程序并允许其成为设备管理员。(您可以从“设置” ->“位置和安全性” ->“设备管理员”中查看当前可用的管理员)。现在作为管理员,您可以控制设备上的功能,例如禁止卸载应用程序,防止特定应用程序的安装,禁止特定应用程序的启动,如果安全性受到破坏,则擦除设备等。您还可以防止其他人卸载您的应用程序。

有一些具有此类功能的应用程序可用。我能想到的是Maas360。 免责声明:我自己没有尝试过设备管理API。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接