2017-12-11 18 views
1

통화 화면 내에서 내 활동을 설정하고 싶습니다. 나는 안드로이드 6.0 이상의 버전에서 작동하도록하고 싶지만 안드로이드의 이전 버전에서는 많은 예를 보았다. 즉, 사용 권한을 처리해야합니다. 나는 필요한 권한을 부여 받았다. 그 후 나는 BroadcastReceiver을 상속받은 클래스를 만들어서 전화가 울릴 때이를 감지 할 수 있습니다. 유일한 문제는 통화 디스플레이의 내 활동을 보낼 수 없다는 것입니다. 다음은 내가 사용하는 수업의 일부입니다 :맞춤 통화 활동 설정

public class PhoneStateReceiver extends BroadcastReceiver { 

    public void onReceive(Context context, Intent intent) { 
     try { 
      System.out.println("Receiver start"); 
      String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
      Toast.makeText(context, " Receiver start ", Toast.LENGTH_SHORT).show(); 

      if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
       Toast.makeText(context, "Ringing State Number is -", Toast.LENGTH_SHORT).show(); 
       Intent dialogIntent = new Intent(context, LockActivity.class); 
       dialogIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
       context.startActivity(dialogIntent); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 

public class LockActivity extends AppCompatActivity { 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_lock_screen); 
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON 
       + WindowManager.LayoutParams.FLAG_DISMISS_KEYGUARD | 
       +WindowManager.LayoutParams.FLAG_SHOW_WHEN_LOCKED | 
       +WindowManager.LayoutParams.FLAG_TURN_SCREEN_ON); 
     Button btnLock = (Button) findViewById(R.id.btnUnlock); 
     final EditText txtPass = (EditText) findViewById(R.id.txtPass); 
     btnLock.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View v) { 
       String pass = txtPass.getText().toString(); 
       if(pass.equals("pass")||pass.equals("пасс")) { 
        finish(); 
       }else{ 
        Toast.makeText(LockActivity.this, "Wrong password!", Toast.LENGTH_SHORT).show(); 
       } 
      } 
     }); 

    } 
} 

다른 것이 필요하면 문의하십시오!

+0

어쩌면 [사용자 정의 안드로이드 전화 응용 프로그램을 (https://stackoverflow.com/questions/20600377/custom-android-telephony-application) 작성에 대한이 이전 게시물에 유용합니다? – 0X0nosugar

+0

아니요, 링크가 더 이상 사용할 수없는 링크가있는 이전 질문으로 연결됩니다. –

+0

유감입니다. 링크 모음이 유망 해 보였습니다. 적어도 당신을 맞히고 "전화 앱"을 쓰고 싶습니까? – 0X0nosugar

답변

1

나는 그것을 해결하기 위해 관리가 문제가 내 활동이 처음 시작하고, 다른 하나는 그 위에 갔다 그래서는 내장 통화 활동을 시작하는 데 시간이 걸린다는 것이다. 그러므로 나는 현재 활동중인 실을 1 초도 못하게 잠들게했다. 내장 된 활동이 시작되고 내 활동이 시작되었습니다.

public class PhoneStateReceiver extends BroadcastReceiver { 

     public void onReceive(Context context, Intent intent) { 
      try { 
       System.out.println("Receiver start"); 
       String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE); 
       Toast.makeText(context, " Receiver start ", Toast.LENGTH_SHORT).show(); 

       if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) { 
        Toast.makeText(context, "Ringing State Number is -", Toast.LENGTH_SHORT).show(); 
        Intent dialogIntent = new Intent(context, LockActivity.class); 
        dialogIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_REORDER_TO_FRONT); 
        Thread.sleep(700); 
        context.startActivity(dialogIntent); 
       } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
}