主屏幕应用程序android

时间:2015-05-13 03:58:35

标签: android

我正在使用app作为Home Screen Lock。该应用程序仅支持4.1及以上版本。问题是处理主页按钮。我知道我们不能覆盖/禁用Home Button,因此必须以不同的方式处理它。我已经苦苦挣扎了将近两个星期,并尝试了很多种方式,但没有一个像预期的那样工作。主要活动是最重要的活动,用户需要在此处输入设置密码才能解锁设备。我已将MainActivity设置为Home,因此系统会提示用户在默认启动器和我的应用之间进行选择。因此,预期的操作是选择我的应用程序作为Launcher' always'。每当MainAcitivity启动时,我也在广播接收器中设置了一个标志。如果MainActivity不是由广播接收器启动,则在MainActivity中使用此标志来启动系统启动器。 一切都很好,直到这一点和方法。问题是,当我点击我的应用程序更改密码或访问其他功能时,它不会打开应用程序并打开系统启动器。原因是它检查主活动中的标志,因为它不是由广播接收器启动的,所以它现在不启动MainActivity并启动系统启动器。以下是代码段:

清单文件:

<activity
   android:name=".MainActivity"
   android:excludeFromRecents="true"
   android:label="@string/app_name"
   android:launchMode="singleTop"
   android:screenOrientation="portrait" >
   <intent-filter>
      <action android:name="android.intent.action.MAIN" />
      <category android:name="android.intent.category.LAUNCHER" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.HOME" />
   </intent-filter>
</activity>

我的广播接收器

if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF) || action.equals(Intent.ACTION_USER_PRESENT)) {
            AppSession.getInstance().setReceiverCall(true);
            MainActivity.isStarted = true;
            Intent i = new Intent(context, MainActivity.class);
            i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            i.addFlags(WindowManager.LayoutParams.TYPE_SYSTEM_ERROR);
            context.startActivity(i);
        }

主要活动,我检查标志并启动系统启动器。我是在onResume上做这件事

if (!MainActivity.isStarted) {
  Intent intent = new Intent();
  intent.setComponent(new ComponentName(mPackageName, mName));
  startActivity(intent);
}

mPackageName&amp; mName是系统启动器名称。

我也尝试了其他方法,但只解决了其中一件事。主页按钮处理正确,然后我的应用程序没有启动。如果应用程序已启动,则可以从主页按钮按下任何位置,它始终将我的MainActivity置于最顶层。

我知道这是可行的,因为它在许多ScreenLock应用程序中完成,但不知何故我错过了一些东西。请指教。

0 个答案:

没有答案