折腾了半天,查资料后发现是由于当前版本较高,危险权限即使申明了也不能用造成的。

网上许多资料都有误导性,其实只需要多加几行代码就解决了,先把成功的代码贴上来:

(1)主活动代码:

import android.Manifest;import android.app.Activity;import android.content.pm.PackageManager;import android.os.Bundle;import android.support.v4.app.ActivityCompat;import android.support.v4.content.ContextCompat;import android.widget.EditText;import android.widget.Toast;import android.telephony.SmsManager;import android.view.View;import android.widget.Button;import java.util.List;public class MainActivity extends Activity implements ActivityCompat.OnRequestPermissionsResultCallback{    /*数据成员*/    private Button snd;//发送键    private EditText tel;//电话号码    private EditText txt;//要发送的文本    /*活动被创建时调用的方法:onCreate()*/    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        snd = findViewById(R.id.Button01);        tel = findViewById(R.id.EditText01);        txt = findViewById(R.id.EditText02);        snd.setOnClickListener(new View.OnClickListener() {            public void onClick(View view) {                sendShortMessage();//点击之后调用sendShortMessage()方法            }        });    }    /*发送信息的函数*/    protected void sendShortMessage() {        String phoneNo = tel.getText().toString();        String message = txt.getText().toString();        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 0);        }        try {            SmsManager smsManager = SmsManager.getDefault();            List texts = smsManager.divideMessage(message);            for (String text : texts) {                smsManager.sendTextMessage(phoneNo, null, text, null, null);            }            Toast.makeText(getApplicationContext(), "发送成功",                    Toast.LENGTH_LONG).show();        }        catch (Exception e) {            Toast.makeText(getApplicationContext(),                    "发送失败",                    Toast.LENGTH_LONG).show();            e.printStackTrace();        }    }}

(2)布局:

            
(3)Manifest文件:

<?xml version="1.0" encoding="utf-8"?>                                                                                    
运行效果:

在运行之前需要检查权限,然后授权以后才能拿到READ_PHONE_STATE。关键代码:

public class MainActivity extends Activity implements ActivityCompat.OnRequestPermissionsResultCallback{...}
以及:

        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 0);        }




更多相关文章

  1. android中使用代码适配屏幕,dp与px互转、sp与px互转
  2. Android(安卓)使用OKHttp获取字符串和下载图片
  3. Android(安卓)的 dex2jar 和 jd-gui 反编译 apk 源代码
  4. android发送http请求—-URLConnection、HttpURLConnection的使用
  5. android client随机验证码生成函数
  6. Android7.0之安装apk文件
  7. 获得android手机的联网状态
  8. [android] Activity 的生命周期 以及横屏竖屏切换时 Activity 的
  9. Android(安卓)Arduino 蓝牙模块通信源代码

随机推荐

  1. Android中以JAR形式封装控件 或者类库
  2. 2019最新Android常用开源库总结(附带githu
  3. android 是通过 ksoap 连接 java xfire w
  4. 我所理解的Android模块化(二)——模块通信
  5. Android(安卓)UI开发第三十五篇——AppCo
  6. Kotlin让Android更简单~
  7. 通过eclipse查看Android源代码(Java)
  8. Android(安卓)Drawable之GradientDrawabl
  9. Android开发者e周报 第3期
  10. android中的push机制实现:android push no