以编程方式解锁Android设备并在启动时加载应用程序

目标 :以编程方式解锁Android设备并在启动时加载应用程序

API :10和18

IDE :Eclipse

测试设备 :仿真器

我理解这个问题已在stackoverflow和其他地方广泛讨论过。 但是我无法让它发挥作用。 我的第一个问题

  • 仿真器可以在程序上解锁并在启动时加载应用程序吗?
  • 我还读到,在API 13之后,有一些变化,我不确定我是否考虑到了这些变化

假设答案是肯定的,请在下面找到代码。

AndroidManifest.xml中

                 

MainActivity.java

 package com.example.display; import android.app.Activity; import android.content.Context; import android.content.res.Configuration; import android.os.Bundle; import android.view.View; import android.view.Window; import android.view.WindowManager.LayoutParams; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // Unlock // http://developer.android.com/reference/android/app/Activity.html#getWindow() Window window = getWindow(); window.addFlags(LayoutParams.FLAG_DISMISS_KEYGUARD); window.addFlags(LayoutParams.FLAG_SHOW_WHEN_LOCKED); window.addFlags(LayoutParams.FLAG_TURN_SCREEN_ON); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } } 

myreceiver.java

我期待代码的这一部分在启动时执行并启动应用程序。

 package com.example.display; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class myreceiver extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Intent myIntent = new Intent(context, MainActivity.class); myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startService(myIntent); } } 

问题:我已将上述代码加载到模拟器并重新启动模拟器。 我期待代码应用程序解锁模拟器并加载启动应用程序。 它不会发生……

不确定下一步要去哪里……

大多数代码片段来自stackoverflow。

我引用的一些post是

  1. 尝试在Android上启动服务
  2. 如何在启动设备时启动应用程序?
  3. Android – 唤醒和解锁设备

先谢谢你。

嗨,我在这里以编程方式添加了解锁,并使用以下代码启动我们的应用程序。您需要在广播接收器中添加解锁代码。 请试试让我。 谢谢

 import android.app.KeyguardManager; import android.app.KeyguardManager.KeyguardLock; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.PowerManager; public class myreceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub // Unlock the screen PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP | PowerManager.ON_AFTER_RELEASE, "INFO"); wl.acquire(); KeyguardManager km = (KeyguardManager) context.getSystemService(Context.KEYGUARD_SERVICE); KeyguardLock kl = km.newKeyguardLock("name"); kl.disableKeyguard(); Intent myIntent = new Intent(context, MainActivity.class); myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startService(myIntent); } }