خانه اندروید

800 ساعت آموزش اختصاصی

بیش از 30 هزار دانشجو

آموزش های پروژه محور

مطالب پیشنهادی حتما مشاهده کنید :

فیلم آموزشی تماس تلفنی اندروید استودیو ACTION_DIAL

فیلم آموزشی تماس تلفنی اندروید استودیو ACTION_DIAL

تماس مستقیم اندروید استودیو

فیلم آموزشی تماس تلفنی اندروید استودیو ACTION_DIAL

تماس گرفتن در اندروید Intent.ACTION_DIAL

ACTION_DIAL

عرض سلام و احترام خدمت دوستان قصد داریم با آموزش اندروید استودیو دیگری درخدمت شما عزیزان باشیم می خواهیم با هم برنامه نویسی تماس با شماره مورد نظر رو توی اندروید کار کنیم ما این کار رو با ACTION_DIAL انجام می دهیم.و در ادامه توضیحات تکمیلی روخدمت شما عرض می کنیم.همان طور که می دانید امروز اپلیکیشن های مثل دیوار و شیپور که مکانی برای تبلیغات هست و کاربران محصولات خودشون رو می توانند رایگان ثبت کنند و در کنار ثبت رایگان شماره تماسی رو هم قرار میدن تا شخصی که قصد خرید داره باهاشون تماس بگیره و عملا وقتی روی شماره فروشنده کلیک می کنید بخش تماس لود میشه و می توانید با شخص مورد نظر تماس بگیرد.

دوستان دقت کنید یادآوری می کنیم که ما هم فیلم اموزشی رو داخل کانال تلگرامی و سایت آپارات و هم چنین در وبسایت جهت دانلود قرار می دهیم که اگر دقت کنید زیر همین پست لینک دانلود فیلم آموزشی موجود هست.

تماس گرفتن به کمک ACTION_DIAL اندروید استودیو :

خوب میریم سراغ آموزش  ACTION_DIAL  خودمون و توضیحات رو خدمتون ارائه می دهیم. ما اول نیاز دارم به ورودی گرفتن از کاربر که همان طور که می دانیم با  EditText  میشه از کاربر ورودی گرفت پس لطفا پروژه جدیدی را ایجاد کنید سپس EditText را به اکتیویتی اضافه کنید و برای اینکه کاربر وقتی شماره تماس را وارد می کنه و وقتی می خواهد تماس بگیره نیاز داریم به یک دکمه Button که بتونه با شخص مورد نظر تماس بگیره و اما سورس کد بخش xml :

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    xmlns:tools="https://schemas.android.com/tools"
    android:id="@+id/activity_main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="com.app.homeandroidir.callactivity.MainActivity"
android:orientation="vertical">

    <EditText
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:id="@+id/edittxt_call"/>

    <Button
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="تماس با شماره"
        android:id="@+id/btncall"/>


</LinearLayout>

و اما سورس کد جاوا :

package com.app.homeandroidir.callactivity;
import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {
Button btncall;
    EditText editTextcall;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        cast();
        btncall.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                String calltext=editTextcall.getText().toString();
                if (!TextUtils.isEmpty(calltext)){
                    String call="tel:"+calltext;
                    Uri uri=Uri.parse(call);
                    Intent i = new Intent(Intent.ACTION_DIAL,uri);
                    startActivity(i);

                }
                else{
                    Toast.makeText(MainActivity.this, "لطفا شماره تماسی  را وارد کنید.", Toast.LENGTH_SHORT).show();
                }
            }
        });


    }
    void cast()
    {
        btncall = (Button)findViewById(R.id.btncall);
        editTextcall= (EditText) findViewById(R.id.edittxt_call);
    }


}

توضیح سورس کد بالا :

متغییری از نوع String یا رشته ای که بر گرفتن وردی از Edittext:

btncall.setOnClickListener(new View.OnClickListener()

دستور شرطی برای چک کردن اینکه کاربر حتما شماره تماسی را وارد کند :

   if (!TextUtils.isEmpty(calltext)){

اگر شماره تماسی را وارد نکرد پیغام بده :

 else{
                    Toast.makeText(MainActivity.this, "لطفا شماره تماسی  را وارد کنید.", Toast.LENGTH_SHORT).show();
                }

و در آخر اگر شماره تماسی را وارد کرد پس با شماره مورد نظر تماس بگیر :

 String call="tel:"+calltext;
                    Uri uri=Uri.parse(call);
                    Intent i = new Intent(Intent.ACTION_DIAL,uri);
                    startActivity(i);

پیاده سازی تماس مستقیم :

لطفا Button یا object دیگری که قصد دارین کاربر با کلیک کردن روی آن به صورت مستقیم با شما تماس حاصل نمایید را پیاده سازی کنید.و سورس کد زیر را اضافه کنید:

btn_tell.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Intent call = new Intent(Intent.ACTION_CALL);
        call.setData(Uri.parse("tel:09306246423"));
        if (ContextCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(linksupport.this, new String[]{Manifest.permission.CALL_PHONE},REQUEST_PHONE_CALL);
        }
        else
        {
            startActivity( call);
        }
    }
});

و هم چنین متد زیر برای تماس مستقیم نیاز هست :

@Override
public void onRequestPermissionsResult(int requestCode,
      String permissions[], int[] grantResults) {
    switch (requestCode) {
        case REQUEST_PHONE_CALL : {
            if (grantResults.length > 0
                    && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+"09306246423"));

                if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
                    startActivity(intent);
                }
            }
        }
    }
}

و دقت کنید لطفا سطح دسترسی مستقیم را هم باید به اندروید منیفست اضافه کنید.

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

نکته : کافه بازار اجازه انتشار برنامه با تماس مستقیم را نمی دهد و باید مواردی که در بالا آموزش داده شده پیاده سازی شود.

ویا می توانید بدون استفاده از سطح دسترسی با intent این مورد را پیاده سازی کنید :

btn_tell.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String phone = "09306246423";
        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phone, null));
        startActivity(intent);
    }
});

دوستان دقت کنید یادآوری می کنیم که ما هم فیلم اموزشی رو داخل کانال تلگرامی و سایت آپارات و هم چنین در وبسایت جهت دانلود قرار می دهیم که اگر دقت کنید زیر همین پست لینک دانلود فیلم آموزشی موجود هست.

 

خانه اندروید دانلود فیلم آموزشی  لطفا فیلم آموزشی رو هم ببنید برای توضیحات بیشتر :

homeandroid.ir  دانلود فیلم آموزشی تماس تلفنی اندروید استودیو ACTION_DIAL

حجم فیلم آموزشی   حجم فیلم : ۲۱ مگابایت

پسورد فایل   پسورد فایل فشرده : homeandroid.ir

خانه اندروید منبع آموزش : خانه اندروید

درباره نویسنده

جواد محمدی هستم بنیان‌گذار سایت خانه اندروید در خدمتون هستیم با آموزش و مفاهیم برنامه نویسی اندروید-نزدیک به 10 سال هست در حوزه برنامه نویسی فعالیت می کنم. مسلط به kotlin,java,flutter,php هستم . در خانه اندروید دانستی های خودم را در اختیار تمامی علاقمندان به برنامه نویسی قرار میدم.تشکر از اینکه خانه اندرورید رو دنبال می کنید.

قبل از ارسال دیدگاه

  • قبل از ارسال دیدگاه: لطفا دیدگاه خودتون رو فقط در مورد این مطلب بنویسید.سپاسگزارم.

    دیدگاه های طولانی نادیده گرفته می شوند لذا دیدگاه خودتان را در دو خط خلاصه کنید.

    دیدگاه های که شامل توهین یا متن توهین آمیز اصلا تایید نمی شود.

    به دیدگاه های بی نام و نشان که ایمیل فیک و نام فیک وارد می کنند پاسخ داده نمی شود

2 دیدگاه

  1. Sadra گفت:

    نمیدونم چرا تو پست قبل علامت ها کوچکتر/بزرگتری رو حذف کرد
    من List هارو به صورت لیستی از ApplicationInfo تعریف کردم
    List

  2. Sadra گفت:

    سلام.
    من یه سوال دارم که وقتی تو سایت سرچ کردم PackageManager ، این صفحه رو آورد، اما ستقیما به این مبحث مربوط نمیشه. اگه جواب بدید ممنون میشم:
    من میخوام لیست اپلیکیشن های گوشی رو بدست بیارم و میخوام از MockPackageManager (با این که الان دیگه استفاده نمیشه) استفاده کنم.
    من از کد زیر استفاده کردم:
    MockPackageManager mpm = new MockPackageManager();
    List appInfoList = mpm.getInstalledApplications(0);

    اما این خطارو بهم داد:
    java.lang.NoClassDefFoundError: Failed resolution of: Landroid/test/mock/MockPackageManager;

    بعد یه جا دیدم اینجوری نوشته:

    List appInfoList = getPackageManager().getInstalledApplications(0);

    وقتی رفتم داکیومنت هارو نگاه کردم، فقط اینارو پیدا کردم:

    Class for retrieving various kinds of information related to the application packages that are currently installed on the device. You can find this class through getPackageManager().

    Return PackageManager instance to find global package information.()

    ولی متوجه نشدم که چرا روش اول اشتباهه و اینکه getPackageManager چیکار میکنه و چرا باید باشه؟
    ممنون