Android_Intent_实例

实现电话程序

方法一

使用系统自带的拨号程序拨打电话(不需要任何权限)

Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL);   //拨号
intent.setData(Uri.parse("tel:12345678910"));   //意图数据
/*
//显示用户数据的通用方式,根据用户的数据类型打开相应的Activity
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Uri.parse("tel:12345678910"));*/
startActivity(intent);

方法二

立即拨打指定电话(需要申请拨号权限

不调用系统程序,单击本程序的按钮即可拨打

  1. 清单文件中,注册电话权限

        <uses-permission android:name="android.permission.CALL_PHONE"/>
    
  2. Activity中权限的动态监测

    //ContextCompat.checkSelfPermission(Context,permission);
    ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)!= PackageManager.PERMISSION_GRANTED
    
  3. 权限的动态申请

    //ActivityCompat.requestPermissions(Activity,String[] permission, requestCode);
    ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.CALL_PHONE},1);
    
  4. 权限已有,意图Intent

        private void dail(){
            Intent intent=new Intent();
            intent.setAction(Intent.ACTION_CALL);
            intent.setData(Uri.parse("tel:"+numberText.getText()));
            startActivity(intent);
        }
    

实现短信程序

短信——通过SMS中心进行转发

  • SMS (Short Message Service,短信息服务) 是一种存储和转发服务
  • 短信管理器类android.telephony.SmsManager

方法一

使用系统自带的短信程序(不需要任何权限)

Intent intent = new Intent();
intent.setAction(Intent.ACTION_SENDTO);//意图动作
//intent.setAction(Intent.ACTION_VIEW);
intent.setDdata(Uri.parse("sms:12345678910?body=手机短信测试"));//意图数据=>发送短信
//另一种写法
/*
Uri uri = Uri.parse("smsto:12345678910");
Intent intent = new Intent(Intent.ACTION_SETNDTO, uri);
intent.putExtra("sms_body", "手机短信测试");*/
startActivity(intent);

方法二

使用短信管理器立即发送短信(需要申请权限)

用户在本程序中输入短信内容、电话号码,点击发送按钮就可发送

  1. 清单文件中,申请权限

    <uses-permission android:name="android.permission. SEND_SMS“/>
    
    <uses-permission android:name="android.permission. READ_PHONE_STATE"/>
    
  2. Activity组件进行权限的动态监测、动态申请

  3. 权限申请成功

    public void onClick(View v) {
        EditText tel = findViewById(R.id.tel);
        EditText message = findViewById(R.id.message);
        //获得短信管理器
        SmsManager smsManager = SmsManager.getDefault();
        //短信内容分段
        List<String> list = smsManager.divideMessage(message.toString());
        //分段发送
        for(String sms : list) {
            //方法参数1为手机号,参数3为短信内容,共5个参数
            smsManager.sendTextMessage(tel.toString, null, sms, null, null);
        }
    }
    /*
    smsManager.sendTextMessage(destinationAddress, scAddress, text, sentIntent, deliveryIntent)  
    
      destinationAddress: 收件人号码 
    
      scAddress: 短信中心服务号码, 这里设置为null 
    
      text: 发送内容
    
      sentIntent: 发送短信结果状态信号(是否成功发送),new 一个Intent , 操作系统接收到信号后将广播这个Intent.此过程为异步.
    
      deliveryIntent: 对方接收状态信号(是否已成功接收).
    */
    
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容