2016-04-22 15 views
0

緊急ダイヤラーを閉じた後、アンドロイドコールロック画面はどうですか?私は緊急コールが最高の活動であれば1秒ごとにチェックしようとしましたが、それは私がちょうどデバイスをロックしていない場合、これはアンドロイド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

さて、私のコードは完全に機能しています。緊急ダイヤラが一番上にない場合、ロック画面を表示することが欲しいのです。 –

関連する問題