2013-05-09 63 views
0

我在Android开发方面相当新,我有一个我正在为孩子们开发的应用程序。我希望应用程序在设备启动时自行启动。当应用程序运行时,我希望它阻止访问任何其他屏幕。禁用家庭按钮,防止访问浏览器,设置等。Android - 自动启动应用程序并限制对其他应用程序的访问

这可能吗?我偶然发现了这个链接http://www.androidsnippets.com/autostart-an-application-at-bootup,但有些人认为这不是一个好的方法来让活动自动启动。

谢谢:-)

回答

2

这是设置应用程序作为启动应用程序在设备 创建一个类继承广播Reciever

public class BootUpReciever extends BroadcastReceiver 
{ 

@Override 
public void onReceive(final Context context, Intent intent) { 
     Intent i = new Intent(context, ServerPreferenceActivity.class); 
     i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
     context.startActivity(i); 
} 
} 

添加权限清单文件中多余的启动时接收

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 

注册将接收器扩展到manifest.xml中的广播接收器

<receiver android:enabled="true" android:name="com.app.reciever.BootUpReciever"> 
    <intent-filter> 
      <action android:name="android.intent.action.BOOT_COMPLETED" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
    </intent-filter> 
</receiver> 

注意:在src文件夹的单独包中创建接收器类以实现工作实现。

+0

这不会阻止用户访问主屏幕或任何其他应用程序。这种方法将确保他们的应用程序在启动时启动,还有单独的软件包有哪些? – 2013-05-09 12:08:16

+0

单独的包意味着在活动之外创建类,否则它不会从清单中路由接收器类。这种方法对我有用,可能会有其他方法。 – 2013-05-09 12:11:27

+0

java包与java编译单元(File)不同,您需要让您的Broadcast Receiver成为cu(java源文件)中的顶级类。 http://en.wikipedia.org/wiki/Java_package。 http://blog.ajduke.in/2012/09/23/java-compilation-unit/ – 2013-05-09 12:19:00

1

您可以构建一个家庭应用程序这将是与用户的设备接口,通过这样做,您可以管理用户体验。看看这里:SO Question

但是构建启动器/家庭应用程序包含很多责任。你将负责所有用户的访问:

  • 设置
  • 电话
  • 其他应用
  • 基本的智能手机应用(邮件,日历......)。
4

听起来就像你需要自己的发射器,因为只有发射器可以阻止访问不必要的屏幕,主页按钮将被启动器“阻止”。
它也将解决“启动”问题。

所有你需要做的就是申报ActivityAndroidManifest这样的:

<activity 
android:name="your.package.ActivityName 
android:launchMode="singleTask"> 
<intent-filter> 
<action android:name="android.intent.action.MAIN" /> 
<category android:name="android.intent.category.LAUNCHER" /> 
<category android:name="android.intent.category.HOME" /> 
<category android:name="android.intent.category.DEFAULT" /> 
</intent-filter> 
</activity> 

激活你的创造力,并建立启动您的需求。
祝你好运!

+0

+1这实际上也是一个有趣的解决方案,但它需要将此启动程序设置为默认值。取决于必须实施的主屏幕功能,它可能有点复杂。但是作为回报,你获得了很多控制权。 – Trinimon 2013-05-09 12:19:23

+0

我试过这个解决方案,它看起来像是正确的方法,但由于缺乏Android经验,我无法使用它。我能够创建一个启动程序,但问题是每次我尝试打开另一个应用程序时,它会给我一个可用的启动程序应用程序列表,这会破坏目的,因为孩子可以选择默认的应用程序,从而保证自己能够访问任何其他应用。我可能会错过一些东西。我不知道。 – Sthe 2013-05-15 15:18:23

2

关于你的问题:

  1. 。“我想应用程序时,该装置启动时,开始自己”

    您可以实施BroadcastReceiver来捕获RECEIVE_BOOT_COMPLETED事件。请参阅this post

  2. “当应用程序运行时,我希望它阻止访问任何其他屏幕。”

    无论何时它被破坏或暂停,您都可以重新开始活动。你可以在背景Service中查看。检查this post了解更多信息。

  3. “禁止家庭按钮”

    根本不可能的。你必须依靠这里的结果。 “

  4. ”阻止访问浏览器,设置等。“

    类似于3. - 你不能真的避免这一点。但是,您可以检查您的应用是否在顶部并重新启动它,如果没有。

希望这会有所帮助...干杯!

相关问题