2014-10-20 5 views
0

다음 코드를 사용하여 프로그래밍 방식으로 WhatsApp 메시지를 보내려고합니다.프로그래밍 방식으로 WhatsApp 메시지를 보낼 수 없습니다.

void openWhatsappContact(String number, Context context) { 
     Uri uri = Uri.parse("smsto:" + number); 
     Intent i = new Intent(Intent.ACTION_SENDTO, uri); 
     i.setPackage("com.whatsapp"); 
     i.putExtra(Intent.EXTRA_TEXT, "test"); 
     context.startActivity(Intent.createChooser(i, "")); 
    } 

이 도우미 함수는 매번 (성공적으로 로그온 할 때 검사 할 때) 성공적으로 호출되지만 메시지를 보내지 못합니다. 그것은 startActivity (로그에서)에서 모두 잘못되었습니다. 참조 용 로그 게시.

10-20 15:59:34.029: W/System.err(16336): android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 
10-20 15:59:34.029: W/System.err(16336): at android.app.ContextImpl.startActivity(ContextImpl.java:847) 
10-20 15:59:34.029: W/System.err(16336): at android.content.ContextWrapper.startActivity(ContextWrapper.java:276) 
10-20 15:59:34.029: W/System.err(16336): at android.content.ContextWrapper.startActivity(ContextWrapper.java:276) 
10-20 15:59:34.029: W/System.err(16336): at com.scimet.admin.driveon.RejectCall.openWhatsappContact(RejectCall.java:79) 
10-20 15:59:34.029: W/System.err(16336): at com.scimet.admin.driveon.RejectCall.onReceive(RejectCall.java:63) 
10-20 15:59:34.029: W/System.err(16336): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2139) 
10-20 15:59:34.029: W/System.err(16336): at android.app.ActivityThread.access$1500(ActivityThread.java:127) 
10-20 15:59:34.029: W/System.err(16336): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1208) 
10-20 15:59:34.029: W/System.err(16336): at android.os.Handler.dispatchMessage(Handler.java:99) 
10-20 15:59:34.029: W/System.err(16336): at android.os.Looper.loop(Looper.java:137) 
10-20 15:59:34.029: W/System.err(16336): at android.app.ActivityThread.main(ActivityThread.java:4441) 
10-20 15:59:34.029: W/System.err(16336): at java.lang.reflect.Method.invokeNative(Native Method) 
10-20 15:59:34.029: W/System.err(16336): at java.lang.reflect.Method.invoke(Method.java:511) 
10-20 15:59:34.029: W/System.err(16336): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
10-20 15:59:34.029: W/System.err(16336): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
10-20 15:59:34.029: W/System.err(16336): at dalvik.system.NativeStart.main(Native Method) 

답변

1

추가 -

i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
+0

완료를 사용해보십시오. 지금 일하고있어. 어쨌든, 의도는 메시지를 보내는 것이 었습니다. 그러나 일어나는 모든 것은 채팅 상자가 열리는 것입니다. 메시지를 입력하고 프로그래밍 방식으로 보내는 방법은 무엇입니까? – Slay

+0

위의 방법을 사용하면 특정 사람을 위해 창을 열어도 텍스트를 추가 할 수 없습니다 .Gaurav의 대답을 사용하여 선택한 텍스트를 사용하려면 보낼 수 있지만 whatsapp 창에서 사람을 선택해야합니다 –

0

는 아래의 코드를

try { 

     Intent intent= new Intent(Intent.ACTION_SEND); 
     intent.setType("text/plain"); 
     String text = "YOUR TEXT HERE"; 

     PackageInfo info=pm.getPackageInfo("com.whatsapp", PackageManager.GET_META_DATA); 
     //Check if package exists or not. If not then code 
     //in catch block will be called 
     intent.setPackage("com.whatsapp"); 

      intent.putExtra(Intent.EXTRA_TEXT, text); 
      startActivity(Intent.createChooser(intent, "Share with")); 

    } catch (NameNotFoundException e) { 
     Toast.makeText(this, "WhatsApp not Installed", Toast.LENGTH_SHORT) 
       .show(); 
    } 
관련 문제