2013-05-08 5 views
4

나는 안드로이드 애플리케이션을 개발 중이며, 다른 기능들 외에도 Viber를 사용하여 전화를 걸 수 있어야합니다. solution for Skype을 사용해 보았지만 성공하지 못했습니다. 내가 얻을 오류입니다 : 내가 Viber 호출하는 데 사용하려고 내 응용 프로그램의Android 앱에서 Viber 통화를 시작하는 방법은 무엇인가요?

05-08 19:51:51.660: D/AndroidRuntime(29140): Shutting down VM 
05-08 19:51:51.660: W/dalvikvm(29140): threadid=1: thread exiting with uncaught exception (group=0x40018578) 
05-08 19:51:51.680: E/AndroidRuntime(29140): FATAL EXCEPTION: main 
05-08 19:51:51.680: E/AndroidRuntime(29140): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=viber:0692155555 } 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1409) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.app.Instrumentation.execStartActivity(Instrumentation.java:1379) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.app.Activity.startActivityForResult(Activity.java:2827) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.app.Activity.startActivity(Activity.java:2933) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at rs.stanar.pantaxinovisad.MainActivity.call(MainActivity.java:61) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at rs.stanar.pantaxinovisad.MainActivity.onClick(MainActivity.java:117) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.view.View.performClick(View.java:2485) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.view.View$PerformClick.run(View.java:9080) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.os.Handler.handleCallback(Handler.java:587) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.os.Handler.dispatchMessage(Handler.java:92) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.os.Looper.loop(Looper.java:130) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at android.app.ActivityThread.main(ActivityThread.java:3687) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at java.lang.reflect.Method.invokeNative(Native Method) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at java.lang.reflect.Method.invoke(Method.java:507) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
05-08 19:51:51.680: E/AndroidRuntime(29140): at dalvik.system.NativeStart.main(Native Method) 

코드는 다음과 같습니다

public void call(String dialNumber) { 
     Intent viber = new Intent("android.intent.action.VIEW"); 
     viber.setData(Uri.parse("viber:" + dialNumber)); 
     startActivity(viber); 
    } 

    <intent-filter> 
      <action android:name="android.intent.action.VIEW" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:scheme="viber" /> 
     </intent-filter> 
     <intent-filter 
      android:priority="0" > 
      <action android:name="android.intent.action.CALL_PRIVILEGED" /> 

      <category android:name="android.intent.category.DEFAULT" /> 

      <data android:scheme="tel" /> 
     </intent-filter> 

나는이 일을하기 위해 무엇을해야합니까? 이 중요했다

public void call(String dialNumber) { 
    try{ 
    Intent callIntent = new Intent("android.intent.action.CALL_PRIVILEGED"); 
    callIntent.setData(Uri.parse("tel:" + dialNumber)); 
    startActivity(callIntent); 
    } 
    catch (Exception e) { 
     Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setData(Uri.parse("tel:" + dialNumber)); 
     startActivity(callIntent); 
    } 
} 

:

+1

Viber가이 의도를 처리하지 않는 것처럼 보입니다. – dannyroa

답변

5

는이 문제는이 코드 조각으로 해결 된 이를 적용한 후

을 "android.intent.action.CALL_PRIVILEGED"새 창이 열렸다 전화를 걸기위한 가능한 모든 방법으로 전화를 걸 수 있습니다.이 특별한 경우에는 Dialer, Viber 및 Skype (또는 나중에 추가 된 다른 방법)이었습니다. 특정 전화 번호로 전화를 명시 적으로 Viber를 시작하려면

+1

답장으로 표시하십시오 ... – GNKeshava

+0

매우 잘 쓰여졌습니다. 고맙습니다. –

6

는 :

Intent localIntent4 = new Intent("com.viber.voip.action.CALL"); 
localIntent4.setType("vnd.android.cursor.item/vnd.com.viber.voip.call"); 
localIntent4.setData(Uri.parse("tel:" + phone_number_to_call)); 
localIntent4.putExtra("external_call", true); 
localIntent4.putExtra("contact_id", -1L); 
startActivity(localIntent4); 

당신이해야 할 모든 당신이 원하는대로 변수 phone_number_to_call를 초기화하는 것입니다.

관련 문제