1

私は2つの放送を持っています。

1つは画面のオン/オフ用で、もう1つは電話の状態用です。画面がオンの場合はアクティビティをユーザーに表示したいのですが、電話の場合は表示しません。

これを管理する方法はどんな助けでもありがたいです。

4

1 に答える 1

1

ブロードキャストアクションを次のように識別するには、if/else条件を使用する必要があります。

public static final String Screen_on = "android.intent.action.SCREEN_ON";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Screen_on)) {
   // do your job here if screen is on /off
}
else{
        // send new intent to your Activity here 
         Intent intent = new Intent(context,Activity1.class);
     intent.putExtra("status","CALL_STATE");
     context.startActivity(intent);

        Bundle extras = intent.getExtras();
       if (extras != null) {
        String state = extras.getString(TelephonyManager.EXTRA_STATE);
        if (state.equals(TelephonyManager.EXTRA_STATE_RINGING) {
           // do your job here if PHONE STATE CHNAGED
        }
      }

}

AndroidManifest.xmlアクティビティをとして宣言し、android:launchMode="singleTask" onNewIntentをオーバーライドして、アクティビティが次のように実行されているときにインテントを受け取ります。

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    setIntent(intent);
    finishactivity();
}
private void finishactivity(){
    Intent intent = getIntent();
    Bundle extras=intent.getExtras();
    if(extras!=null){
          if(extras.getString("status").equals("CALL_STATE"))
         // finish your Activity here
    } 
}
于 2013-01-22T05:08:17.840 に答える