Java 从SMSPortalFragment发送短信不工作

Java 从SMSPortalFragment发送短信不工作,java,android,sms,send,android-fragmentactivity,Java,Android,Sms,Send,Android Fragmentactivity,我一直在尝试使用send\u sms api发送测试消息。MySMSPortalFragment.javacode未显示错误。此外,Logcat中没有显示其他错误 代码构建并安装在Galaxy S8中 这个应用程序运行起来很有趣 转到fragment\u smsportal.xml工作正常 我可以输入我的姓名和信息 单击按钮时,它会在运行时请求我的权限 即使我允许权限,也不会发送任何消息 java代码: private static final int MY_PERMISSIONS_REQUES

我一直在尝试使用
send\u sms api发送测试消息。
My
SMSPortalFragment.java
code未显示错误。此外,Logcat中没有显示其他错误

  • 代码构建并安装在Galaxy S8中
  • 这个应用程序运行起来很有趣
  • 转到
    fragment\u smsportal.xml
    工作正常
  • 我可以输入我的姓名和信息
  • 单击按钮时,它会在运行时请求我的
    权限
  • 即使我允许
    权限
    ,也不会发送任何消息
  • java代码:

    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();
                }
            }
        }
    
    }
    
    谁能告诉我我做错了什么

    PS:出于安全考虑,我从这个代码中删除了我的电话号码

    不要在onRequestPermissionsResult()中写入发送逻辑 及

    试试这个。。。 明示许可


    我遵循了这里的代码:使用SmsManager API。顺便说一句,非常感谢。花了我一段时间。作为noob,我是。但它现在正在工作。。
    <uses-permission-sdk-23 android:name="android.permission.SEND_SMS"/>
    
       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();
            }