2017-05-02 9 views
0

일부 휴대폰에서 SMS를 보낼 때. 그러나 일부 휴대폰의 경우 일반적인 오류가 발생합니다. 나는 잘 헤쳐나가 ways-와 전화 번호에 대한 국가 코드없이 여전히 같은 오류가 모두 시도로 모든 SMS가 읽기/쓰기 권한을 부여했다. 왜이 오류가 발생합니까? 아래는 코드입니다.일반 고장 나는 일반적으로 사용 가능한 코드를 사용하여보다 160 자하는 SMS를 보내려고하고

private void sendSMS(String phoneNumber, String message) 
{ 
    String SENT = "SMS_SENT"; 
    String DELIVERED = "SMS_DELIVERED"; 

    PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, 
      new Intent(SENT), 0); 

    PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, 
      new Intent(DELIVERED), 0); 

    //---when the SMS has been sent--- 
    registerReceiver(new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 

      if(getResultCode()== Activity.RESULT_OK){ 
       Toast.makeText(getBaseContext(), "SMS sent", 
         Toast.LENGTH_SHORT).show(); 
      } else if (getResultCode()== SmsManager.RESULT_ERROR_GENERIC_FAILURE){ 
       Toast.makeText(getBaseContext(), "Generic failure", 
         Toast.LENGTH_SHORT).show(); 
      } else if (getResultCode() == SmsManager.RESULT_ERROR_NO_SERVICE){ 
       Toast.makeText(getBaseContext(), "No service", 
         Toast.LENGTH_SHORT).show(); 
      }else if (getResultCode() == SmsManager.RESULT_ERROR_NULL_PDU){ 
       Toast.makeText(getBaseContext(), "Null PDU", 
         Toast.LENGTH_SHORT).show(); 
      }else if (getResultCode() == SmsManager.RESULT_ERROR_RADIO_OFF){ 
       Toast.makeText(getBaseContext(), "Radio off", 
         Toast.LENGTH_SHORT).show(); 
      }else { 
       Toast.makeText(getBaseContext(), "Unknown error!!", 
         Toast.LENGTH_SHORT).show(); 
      } 


     } 
    }, new IntentFilter(SENT)); 

    //---when the SMS has been delivered--- 
    registerReceiver(new BroadcastReceiver(){ 
     @Override 
     public void onReceive(Context arg0, Intent arg1) { 
      switch (getResultCode()) 
      { 
       case Activity.RESULT_OK: 
        Toast.makeText(getBaseContext(), "SMS delivered", 
          Toast.LENGTH_SHORT).show(); 
        break; 
       case Activity.RESULT_CANCELED: 
        Toast.makeText(getBaseContext(), "SMS not delivered", 
          Toast.LENGTH_SHORT).show(); 
        break; 
      } 
     } 
    }, new IntentFilter(DELIVERED)); 

    SmsManager sms = SmsManager.getDefault(); 
    sms.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI); 

    //ArrayList<String> texts = sms.divideMessage(message); 
    //sms.sendMultipartTextMessage(phoneNumber, null, texts, null, null); 

} 

아래에있는 사용 권한이 있습니다.

<uses-permission android:name="android.permission.SEND_SMS"></uses-permission> 
<uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission> 
+0

는 아마도 라디오 로그는 당신에게 몇 가지 단서를 줄 수 있습니다. SmsDispatcher와 RIL이 흥미로운 것을 출력하는지보십시오. – fejd

답변

0

이 휴대 전화의 API는 6.0 이상입니다. 그렇다면 명시 적/프로그램 적으로 권한을 요청해야합니다.

+0

는 ScottS- @ 난 이미 응용 프로그램 관리자의 모든 권한을 부여했다. 응용 프로그램이 시작될 때마다 여전히 허가를 요청해야합니까? – hardcoder