day25

一、排坑

AndroidStudio非法字符: '\ufeff'

将文件格式改为以UTF-8无BOM格式编码

Sublime Text 保存时 CodeFormatter file is scratch

ctrl+shift+p打开命令面板,remove package

Android Studio内中文乱码

sublime打开并保存

 

二、运行时权限

AndroidManifest.xml文件

<uses-permission android:name="android.permission.CALL_PHONE"/>

发短信案例

@Override
protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button bt=(Button)findViewById(R.id.send);
        bt.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if (ContextCompat.checkSelfPermission(MainActivity.this,
                        Manifest.permission.SEND_SMS)!= PackageManager.PERMISSION_GRANTED){
                    //申请权限
                    ActivityCompat.requestPermissions(MainActivity.this,
                            new String[]{Manifest.permission.SEND_SMS},1);
                }else {
                    //把动作告诉系统
                    send();
                }
            }
        });
    }

public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case 1:
                //发短信权限回调
                if (grantResults[0]==PackageManager.PERMISSION_GRANTED){
                    send();
                }else {
                    //提示用户权限未被授予
                    Log.d("MainActivity","未授予发短信权限");
                }
                break;
        }
    }
public void send(){
    //拿到用户输入的号码和内容
    EditText et_phone = (EditText) findViewById(R.id.et_phone);
    EditText et_content = (EditText) findViewById(R.id.et_content);
    
    String phone = et_phone.getText().toString();
    String content = et_content.getText().toString();
    
    //1.获取短信管理器
    SmsManager sm = SmsManager.getDefault();
    
    //2.切割短信,把长短信分成若干个小短信
    ArrayList<String> smss = sm.divideMessage(content);
    
    //3.for循环把集合中所有短信全部发出去
    for (String string : smss) {
        sm.sendTextMessage(phone, null, string, null, null);
    }
}

危险权限

day25

三、点击事件的四种写法

第一种

  • 定义一个MyListener实现onClickListener接口

     Button bt1 = (Button) findViewById(R.id.bt1);
      bt1.setOnClickListener(new MyListener());

     

第二种

  • 定义一个匿名内部类实现onClickListener接口

    Button bt2 = (Button) findViewById(R.id.bt2);
      bt2.setOnClickListener(new OnClickListener() {
    
          @Override
          public void onClick(View v) {
              System.out.println("第二种");
    
          }
      });

     

第三种

  • 让当前activity实现onClickListener接口

      Button bt3 = (Button) findViewById(R.id.bt3);
      bt3.setOnClickListener(this);

     

第四种

  • 给Button节点设置onClick属性,

     android:onClick="click"

     

  • 然后在activity中定义跟该属性值同名的方法

     public void click(View v){
          System.out.println("第四种");
      }

     

 

参考链接:https://www.jianshu.com/p/b9665348a694

 

上一篇:android – 对于加速计传感器的Get Data Fragment类型,未定义方法findViewById(int)


下一篇:Android:一个findViewById()方法,它返回我们不需要强制转换的值