2017-12-06 28 views
0

사용하여 테스트 메시지를 보내려고했습니다 send_sms api.SMSPortalFragment.java 코드에 오류가 없습니다. 또한 Logcat에 표시된 다른 오류가 없습니다.SMSPortalFragment에서 SMS를 보내지 않습니다.

  1. 코드는 Galaxy S8에서 빌드 및 설치됩니다.
  2. 앱이 재미있게 실행됩니다.
  3. fragment_smsportal.xml으로가는 것이 좋습니다.
  4. 내 이름과 메시지를 입력 할 수 있습니다.
  5. 버튼을 클릭하면 런타임에 내 PERMISSION을 묻습니다.
  6. 허용 메시지는 내가 허용 한 후에도 발생합니다. PERMISSION.

자바 코드 :

private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ; 

Button sendButon; 
EditText fullName; 
EditText textMessage; 
String phoneNo = "***********"; 
String name; 
String message; 
String sendMessage; 

public SMSPortalFragment() { 
    // Required empty public constructor 
} 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    // Inflate the layout for this fragment 
    View smsportal = inflater.inflate(R.layout.fragment_smsportal, container, false); 

    fullName = (EditText) smsportal.findViewById(R.id.fullName); 
    textMessage = (EditText) smsportal.findViewById(R.id.textMessage); 
    sendButon = (Button) smsportal.findViewById(R.id.sendButon); 

    sendButon.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      sendSMSMessage(); 
     } 
    }); 

    return smsportal; 
} 

private void sendSMSMessage() { 
    name = fullName.getText().toString(); 
    message = textMessage.getText().toString(); 
    sendMessage = name + " " + message; 


    if (ContextCompat.checkSelfPermission(getActivity(), 
      Manifest.permission.SEND_SMS) 
      != PackageManager.PERMISSION_GRANTED) { 
     if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), 
       Manifest.permission.SEND_SMS)) { 
     } else { 
      ActivityCompat.requestPermissions(getActivity(), 
        new String[]{Manifest.permission.SEND_SMS}, 
        MY_PERMISSIONS_REQUEST_SEND_SMS); 
     } 
    } 
} 
@Override 
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_SEND_SMS: { 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       SmsManager smsManager = SmsManager.getDefault(); 
       smsManager.sendTextMessage(phoneNo, null, sendMessage, null, null); 
       Toast.makeText(getActivity(),"SMS sent.", Toast.LENGTH_LONG).show(); 
      } else { 
       Toast.makeText(getActivity(),"SMS failed, please try again.", Toast.LENGTH_LONG).show(); 
      } 
     } 
    } 

} 

사람이 내가 잘못 뭐하는 거지 말씀해 주시겠습니까?

추신 : 안전 문제로 인해이 코드에서 전화 번호를 제거했습니다.

답변

0
onRequestPermissionsResult() 및

이 시도에 전송 로직을 작성하지 마십시오

...

매니페스트 권한

<uses-permission-sdk-23 android:name="android.permission.SEND_SMS"/> 

여기 SmsManager API를 사용하여 https://www.tutorialspoint.com/android/android_sending_sms.htm : 여기에서 코드를 따랐다

try { 
      Bundle msgDataBundle = intent.getExtras(); 
      String mobileNumber = msgDataBundle.getString("MobileNumber"); 
      SmsManager smsManager = SmsManager.getDefault(); 
      // smsManager.sendTextMessage(mobileNumber,null,"sam",null,null); 
      smsManager.sendTextMessage(mobileNumber, null, "Test Sample Message Text", null, null); 
      Toast.makeText(context, "SMS Sent!", Toast.LENGTH_LONG).show(); 
      Log.d("---", "Sent"); 

     } catch (Exception e) { 
      Toast.makeText(context, "SMS faild, please try again.", Toast.LENGTH_LONG).show(); 
      Log.d("---", "Fail"); 
      e.printStackTrace(); 
     } 
+0

스 니펫을입니다. –

+0

길을 많이 고마워 .. 잠시만 .. 멍청 아. 나는 .. 근데 .. 지금 일하고있어. –