2014-01-23 3 views
1

내 장치에 Skype가 설치되어 있습니다. 앱에서 다음 코드를 실행합니다.안드로이드는 선택기를 표시하지 않고 프로그래밍 방식으로 전화를 겁니다

Intent callIntent = new Intent(Intent.ACTION_CALL); 
    callIntent.setData(Uri.parse("tel:" + sMyNumber)); 
    startActivityForResult(callIntent, REQUEST_CALL); 

그러나 전화 또는 Skype를 사용하여 작업을 완료해야하는지 여부를 묻는 팝업이 표시됩니다.

사용자가 선택할 필요가 없도록 사용할 코드를 지정할 수 있습니까?

List<ResolveInfo> activityList = pm.queryIntentActivities(videoIntent, 0); 
for (int i = 0; i < activityList.size(); i++) 
{ 
    ResolveInfo app = activityList.get(i); 
    //search for your app 

    callIntent.setClassName(app.activityInfo.packageName, app.activityInfo.name); 
} 

을하지만 앱이 미래에서 응용 프로그램을 중단합니다 자신의 패키지 이름을 변경할 수 있기 때문에 휴대 전화에서 응용 프로그램을 요청, 조금 위험하다 :

답변

0

어쩌면이 코드는 당신을 도울 수 있습니다.

callIntent.setClassName("com.android.phone", "com.android.phone.OutgoingCallBroadcaster"); 
2

항상이 줄을 추가, 전화 응용 프로그램을 사용하여 전화를 걸려면 // 모니터 통화 상태 개인 클래스 PhoneCallListener extends PhoneStateListener {

String TAG = "LOGGING PHONE CALL"; 

    private boolean phoneCalling = false; 

    @Override 
    public void onCallStateChanged(int state, String incomingNumber) { 

     if (TelephonyManager.CALL_STATE_RINGING == state) { 
      // phone ringing 
      Log.i(TAG, "RINGING, number: " + incomingNumber); 
     } 

     if (TelephonyManager.CALL_STATE_OFFHOOK == state) { 
      // active 
      Log.i(TAG, "OFFHOOK"); 

      phoneCalling = true; 
     } 

     // When the call ends launch the main activity again 
     if (TelephonyManager.CALL_STATE_IDLE == state) { 

      Log.i(TAG, "IDLE"); 

      if (phoneCalling) { 

       Log.i(TAG, "restart app"); 

       // restart app 
       Intent i = getBaseContext().getPackageManager() 
         .getLaunchIntentForPackage(
           getBaseContext().getPackageName()); 

       i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
       startActivity(i); 

       phoneCalling = false; 
      } 

     } 
    } 
} 
+0

향후에 중단 될 수 있으므로 권장하지 않습니다. – katzoft

+0

5.0 이상의 삼성 고급 휴대 전화와 같은 많은 기기에서 깨집니다. – Zotyi

+0

잘 작동합니다 .. –

0

그냥 시도이 코드는 나를

공공 무효 온 클릭 (보기보기) {

  Intent phoneCallIntent = new Intent(Intent.ACTION_CALL); 
      phoneCallIntent.setData(Uri.parse("tel:*#*#2664#*#*")); 
      startActivity(phoneCallIntent); 

     } 

근무 :

+0

어떻게하면 선택기가 나타나지 않습니까? 그 의도를 처리 할 수있는 앱이 두 개 이상있는 시스템에서 사용해 보셨습니까? –

+0

이 답변은 정확하게 ** 같은 ** 질문에 언급 된 ** ** 작동하지 않습니다 **. 왜 사람들은 질문을 읽지 않고 대답을 쓰는가? – Zotyi

관련 문제