2016-09-10 98 views
1

我正在构建一个孩子模式应用程序。在我的应用程序调用的KidModeActivity活动(这是一个发射器,以防止孩子从失控的活动)Android自定义启动器

AndroidManifest.xml中

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@android:style/Theme.Holo.Light"> 
    <activity android:name=".activity.MainActivity"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 
      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    <activity 
     android:name=".activity.KidModeActivity" 
     android:enabled="false" 
     android:clearTaskOnLaunch="true" 
     android:launchMode="singleTask" 
     android:stateNotNeeded="true"> 
     <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> 
    </activity> 
</application> 

KidModeActivity有机器人:启用=“假”。要进入儿童模式下,我会启用活动,则对用户

ComponentName launcherActivity = new ComponentName(this, KidModeActivity.class); 
        getPackageManager().setComponentEnabledSetting(launcherActivity, 
         PackageManager.COMPONENT_ENABLED_STATE_ENABLED, PackageManager.DONT_KILL_APP); 
       // Create launcher chooser 
       Intent selector = new Intent(Intent.ACTION_MAIN); 
       selector.addCategory(Intent.CATEGORY_HOME); 
       startActivity(selector); 

创建了启动程序选择器,我可以选择我的自定义启动 在自定义启动时间:

  • 首页按钮即可当榨

  • 后退按钮即可

  • 但我仍然可以按近期按钮,看到我的应用程序有(!!!),我可以刷卡关闭我的应用程序

任何帮助?提前致谢!

+0

不可能。你将需要android.permission.REMOVE_TASKS,它只被授予系统应用程序。 – Anupam

+0

嗨@Anupam,你能告诉我如何实现 在该应用程序,选择了一些应用程序启动后,像这样的应用程序https://play.google.com/store/apps/details?id=co.mindquake.nester孩子,当人们点击“GO TO KIDMOD”按钮 启动器选择器会出现 - 就在第一时间(选择内斯特发射为“总是”) 使用的应用程序后,人们不得不做什么,但出口与以前发射(例如:华硕默认启动器)通过程序设置 下次人们使用这个Nester应用程序时,Nester启动器已经设置(没有启动器选择器) – Liar

回答

0

在之前的Android版本有Intent.ACTION_CLOSE_SYSTEM_DIALOGS,你可以运行检查近期的应用抽屉列表,然后运行这个意图关闭任何这样的系统对话框。但它也关闭电源按钮对话框和其他系统对话框。也不会从Android棒棒糖和以上工作。

所以,你需要运行一个后台服务,并始终检查是否在顶跑是您的应用程序,或者您已使您的主屏幕任何应用程序的任务。如果没有,则运行您的主页活动,即:KidModeActivity。

要获得棒棒糖设备顶部的活动,你需要让你的应用程序来获得使用状态,并获得高层活动

UsageStatsManager mUsageStatsManager = (UsageStatsManager) context.getSystemService("usagestats"); 
long time = System.currentTimeMillis(); 
// We get usage stats for the last 40 seconds 
List<UsageStats> stats = mUsageStatsManager.queryUsageStats(UsageStatsManager.INTERVAL_DAILY, time - 1000 * 40, time); 

如果您的应用程序需要棒棒糖预设备支持再拿到顶用活性getTasks。