2016-04-22 70 views
0

请解释一下,关闭紧急拨号程序后,android如何调用锁屏。我试图检查每一秒,如果紧急呼叫是最重要的活动,如果它不是,那么我只是锁定设备,但这并没有做它的工作在Android 5.0和更高。所以,我需要另一种解决方案。如何知道手机应用程序是否关闭

我的代码:

private static final long INTERVAL = TimeUnit.SECONDS.toMillis(1/100); 
    private Thread t = null; 
    private Context ctx = null; 
    private boolean running = false; 
public MyService2() { 
    } 

    @Override 
    public IBinder onBind(Intent intent) { 
     return null; 
    } 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

    } 

    @Override 
    public int onStartCommand(Intent intent, int flags, int startId) { 
final ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); 

     running = true; 
     ctx = this; 
     Log.i("Point","PreRun"); 
     t = new Thread(new Runnable() { 
      @Override 
      public void run() { 
       Log.i("Point","preloop"); 
       do { 
        Log.i("Point", "Prechech"); 
        if (activityManager.getRunningTasks(1).get(0).topActivity.getPackageName().equals("com.android.phone") || activityManager.getRunningTasks(1).get(0).topActivity.getPackageName().equals("com.android.dialer")) 
        { 
         try { 

          Thread.sleep(INTERVAL); 
         } catch (InterruptedException e) { 
          Log.i("Point", "Thread interrupted: 'KioskService'"); 
         } 
        } else { 
         running=false; 
         Log.i("Task is",activityManager.getRunningTasks(1).get(0).topActivity.getPackageName()); 
         stopSelf(); 
        } 
       }while (running) ; 
      } 
     }); 
     t.start(); 
     Log.i("Point","Done"); 
     return super.onStartCommand(intent, flags, startId); 
    } 

    @Override 
    public void onDestroy() { 
     super.onDestroy(); 
     Log.i("Point","Service is stopped"); 
    } 
} 

而且这样的:

public class MyActivity extends Activity{ 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 
     Button button = (Button) findViewById(R.id.button); 
     button.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent("com.android.phone.EmergencyDialer.DIAL"); 
       startActivity(intent); 
       Intent intent1 = new Intent(MyActivity.this,MyService2.class); 
       startService(intent1); 
      } 
     }); 
    } 
} 
+0

请发布您的完整代码,以便我们可以帮助您。 – Lampard

+0

@crazyandroid我添加了我的代码 –

+0

你在哪里使用这个服务?@S.Drumble – Lampard

回答

0

可以启动你的紧急拨号程序是这样的:

Intent intent = new Intent("android.intent.action.MAIN"); 
intent.setComponent(ComponentName.unflattenFromString("com.android.phone/.EmergencyDialer")); 
    intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 

此外,请检查您是否正确申报服务在清单中。

<service 
       android:name=".MyService2"> 
</service> 
+0

那么,我的代码是完全正常工作,我想要的是如果紧急拨号程序不在顶部,则显示锁定屏幕。 –

相关问题