安卓基础练习--Activity

概述

通过这个小练习巩固Activity跳转知识.

先上丑陋的界面…
在这里插入图片描述

界面实现代码

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        tools:context=".Activity.send"
        android:orientation="vertical">

    <EditText
            android:id="@+id/et_number"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入电话号码" />

    <EditText
            android:id="@+id/et_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:hint="请输入短信内容" />

    <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content">

        <Button
                android:id="@+id/btn_number"
                android:layout_height="wrap_content"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:text="打电话" />

        <Button
                android:id="@+id/btn_message"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="发短信" />

    </LinearLayout>
</LinearLayout>

实现功能

1. 短按启动拨号界面

在这里插入图片描述

2.长按打电话

在这里插入图片描述

在这里插入图片描述

3.短按启动短信编辑界面

在这里插入图片描述

4.长按发短信

在这里插入图片描述

测试这个需要两个模拟器,而我比较懒,有兴趣的同学可以测一测…

主体实现代码

public class send extends AppCompatActivity {
    private EditText mNumberEt;
    private EditText mMessageEt;
    private Button mBtnCall;
    private Button mBtnSend;
    //打电话权限请求码
    private static final int CALL_PHONE_REQUEST_CODE = 1;
    //发短信权限请求码
    private static final int SEND_MESSAGE_REQUEST_CODE = 2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_send);
        //初始化控件
        init();
        //点击启动拨号界面
        mBtnCall.setOnClickListener(v -> {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_DIAL);
            String number = mNumberEt.getText().toString();
            intent.setData(Uri.parse("tel:" + number));
            startActivity(intent);
        });
        //点击启动编辑短信界面
        mBtnSend.setOnClickListener(v -> {
            Intent intent = new Intent();
            intent.setAction(Intent.ACTION_SENDTO);
            String number = mNumberEt.getText().toString();
            String message = mMessageEt.getText().toString();
            intent.setData(Uri.parse("smsto:" + number));
            intent.putExtra("sms_body", message);
            startActivity(intent);
        });
        // 长按打电话
        mBtnCall.setOnLongClickListener(v -> {
            String number = mNumberEt.getText().toString();
            Uri uri = Uri.parse("tel:" + number);
            if (checkCallPermission()) {
                call();
            } else {
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.CALL_PHONE}, CALL_PHONE_REQUEST_CODE);
            }
            //表示此事件已经被消费,不会触发点击事件.如果不返回true,则当长按松手后会触发onClick事件.
            return true;
        });
        // 长按发短信
        mBtnSend.setOnLongClickListener(v -> {
            if (checkSMSPermission()) {
                sendMessage();
            } else {
                ActivityCompat.requestPermissions(this,
                        new String[]{Manifest.permission.SEND_SMS}, SEND_MESSAGE_REQUEST_CODE);
            }
            return true;
        });
    }
    //Android6.0后运行时权限引入,不仅需要在Manifest中添加对应权限, 还需要进行对应权限的动态申请.
    private boolean checkCallPermission() {
        return ContextCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE)
                == PackageManager.PERMISSION_GRANTED;
    }

    private boolean checkSMSPermission() {
        return ContextCompat.checkSelfPermission(this, Manifest.permission.SEND_SMS)
                == PackageManager.PERMISSION_GRANTED;
    }

    private void call() {
        String number = mNumberEt.getText().toString();
        Uri uri = Uri.parse("tel:" + number);
        Intent intent = new Intent(Intent.ACTION_CALL);
        intent.setData(uri);
        startActivity(intent);
    }

    private void sendMessage() {
        SmsManager manager = SmsManager.getDefault();
        String number = mNumberEt.getText().toString();
        String message = mMessageEt.getText().toString();
        //后两个参数用来设置短信回执.
        manager.sendTextMessage(number, null, message, null, null);
    }
    
    //ContextCompat.checkSelfPermission()的回调方法, 每次调用checkSelfPermission都会调用此方法.
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode) {
            case CALL_PHONE_REQUEST_CODE:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    call();
                } else {
                    Toast.makeText(this, "您拒绝了拨打电话权限,无法拨打电话!", Toast.LENGTH_SHORT).show();
                }
                break;
            case SEND_MESSAGE_REQUEST_CODE:
                if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                    sendMessage();
                } else {
                    Toast.makeText(this, "您拒绝了发送短信权限,无法发送短信!", Toast.LENGTH_SHORT).show();
                }
                break;
        }
    }

    private void init() {
        mNumberEt = findViewById(R.id.et_number);
        mMessageEt = findViewById(R.id.et_message);
        mBtnCall = findViewById(R.id.btn_number);
        mBtnSend = findViewById(R.id.btn_message);
    }
}

很简单的一个小Demo, 唯一需要注意的点就是如果不申请运行时权限长按发短信和长按打电话会报异常.

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android Studio 是一款常用的 Android 应用开发工具,可用于从零基础开发到将应用上线。下面我将简要介绍从零基础到应用上线的过程。 首先,学习 Android 开发需要掌握 Java 编程语言。建议从Java入门开始学习,了解基本的语法和面向对象编程思想。 然后,下载并安装 Android Studio。它是由谷歌开发的集成开发环境,用于开发 Android 应用。安装后,配置 JDK 环境变量,并创建一个新的项目。 接下来,学习 Android Studio 的界面和各个功能区域。例如,项目结构、布局编辑器、代码编辑器和调试工具等。同时,还可以参考官方文档、网上教程和视频教程进行学习。 在掌握基本的界面和功能后,可以开始编写应用的代码。了解 Android 应用的基本结构和组件,例如活动 (Activity)、布局 (Layout)、资源 (Resources) 和权限 (Permissions) 等。 通过不断练习和实践,了解常用的 Android 开发技巧和原理。例如,处理用户界面响应、网络请求、数据库操作和数据存储等。 开发完成后,可以使用模拟器或真机进行测试。在模拟器中运行应用,验证功能是否正常。 最后,确定应用已经开发完毕后,就可以进行上线准备。生成应用签名证书,创建一个 Google Play 开发者帐号,并将应用上传到 Google Play 商店进行审核和发布。 需要注意的是,为了确保应用的质量和用户体验,需要进行测试、优化和修复错误。同时,遵循谷歌和开发者社区的最佳实践和指南,确保应用的安全性和兼容性。 总之,从零基础到将应用上线,需要学习 Java 编程语言、掌握 Android Studio 的使用、了解 Android 开发技巧和原理,并进行测试和优化。希望这些信息对您有帮助!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值