简单android程序的开发——拨号程序

简单android程序的开发——拨号程序

开发工具:android studio

语言:java

调试环境:androidQ虚拟机


1、 简单设计程序布局
8uEkeH.png

这就是简单设计图,根据这个设计图先写一下布局,布局文件放在res文件中,在res文件中创建layout文件(有的项目会自动创建。

8uEHht.png

然后再在这个文件中创建布局文件

8uVpAs.png
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"  
    android:layout_height="match_parent">				//宽高填充满屏幕

    <TextView											//文本显示标签
        android:id="@+id/text1"							//为TextView定义id(方便后面使用)
        android:layout_width="match_parent"				//宽度填充满屏幕
        android:layout_height="wrap_content"			//高度包裹住内容
        android:textSize="19sp"							//文本字体大小
        android:text="请输入手机号码">						//文本内容
    </TextView>

    <EditText											//文本编辑标签
        android:id="@+id/number"						//为EditText定义id(方便后面使用)
        android:layout_width="match_parent"				//
        android:layout_height="wrap_content"			//
        android:layout_alignParentLeft="true"			//位置居左
        android:layout_below="@+id/text1"				//位置在text1下面(前面定义了id)
        android:layout_margin="20dp"					//边距
        />
    <Button												//按钮控件
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/number"
        android:layout_margin="20dp"
        android:text="拨打电话"/>


</RelativeLayout>

这就是布局源码,效果如下

8uekmF.png
2、引用该布局

在java文件下建立以下MainActivety.class文件(包名命名随意,一般是把域名倒过来写,比如xyz.wayteam.demo)

8ueOc6.png

源码

package com.pkl.demo;

import android.app.Activity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import androidx.annotation.Nullable;

public class MainActively extends Activity {
    //创建私有变量,方便下面函数取用
    private EditText editText;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //加载刚刚设置的布局
        setContentView(R.layout.demo);

        //找到刚刚EditText。通过findViewById。
        editText = (EditText)findViewById(R.id.number);

        //找到button
        Button button = findViewById(R.id.button1);

        //设置按钮点击事件
        button.setOnClickListener(new MyClick());
    }

    //创建点击事件
    private class MyClick implements View.OnClickListener{

        @Override
        public void onClick(View v) {
  		
        //利用getText得到EditText的输入内容,需要强转数据类型为Sring,trim的作用是去除空字符
        String number = editText.getText().toString().trim();
          
        //用条件语句判断用户输入内容是否为空,如果为空,则提醒用户
        if ("".equals(number)){
            Toast.makeText(MainActively.this,"电话不能为空",1).show();
            return;

        }
            //设置意图
            Intent intent = new Intent();
            //设置意图行为
            intent.setAction(Intent.ACTION_CALL);
            //将上面获取到的数据放进意图里
            intent.setData(Uri.parse("tel:"+number));
            //执行意图
            startActivity(intent);
     
        }
    }


}


*踩过的坑

上面项目写好之后,无法运行。

报错内容:The activity 'MainActively' is not declared in AndroidManifest.xml

可能是

8uuKlq.png

AndroidManifest.xml未配置

配置如下

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.pkl.demo">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActively">		<!--配置刚刚写的项目-->
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.ALTERNATIVE"/>
            </intent-filter>
        </activity>
    </application>
    <uses-permission android:name="android.permission.CALL_PHONE"/><!--获取拨打电话的权限-->
</manifest>

接下来能运行,但是还是无法拨打出电话

报错内容:with revoked permission android.permission.CALL_PHONE

解决办法

8ulZD0.png

给这个应用拨打电话的权限。

成功结果

8u8bZt.gif

Copyright: 采用 知识共享署名4.0 国际许可协议进行许可

Links: https://www.wayok.cn/archives/androidphone

Buy me a cup of coffee ☕.