অ্যান্ড্রয়েডে ইন্টেন্ট ব্যবহার করে কীভাবে ফোন কল করবেন?


329

আমি অ্যান্ড্রয়েডে কল করতে নিম্নলিখিত কোডটি ব্যবহার করছি তবে এটি আমাকে সুরক্ষা ব্যতিক্রম দিচ্ছে দয়া করে সহায়তা করুন।

 posted_by = "111-333-222-4";

 String uri = "tel:" + posted_by.trim() ;
 Intent intent = new Intent(Intent.ACTION_CALL);
 intent.setData(Uri.parse(uri));
 startActivity(intent);

অনুমতি

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

ব্যতিক্রম

11-25 14:47:01.661: ERROR/AndroidRuntime(302): Uncaught handler: thread main exiting due to uncaught exception
11-25 14:47:01.681: ERROR/AndroidRuntime(302): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:111-333-222-4 cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{43d32508 302:com.Finditnear/10026} (pid=302, uid=10026) requires android.permission.CALL_PHONE
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.os.Parcel.readException(Parcel.java:1218)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.os.Parcel.readException(Parcel.java:1206)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1214)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.app.Instrumentation.execStartActivity(Instrumentation.java:1373)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.app.Activity.startActivityForResult(Activity.java:2749)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.app.Activity.startActivity(Activity.java:2855)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at com.Finditnear.PostDetail$2$1$1$1.onClick(PostDetail.java:604)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:884)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.widget.AdapterView.performItemClick(AdapterView.java:284)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.widget.ListView.performItemClick(ListView.java:3285)
11-25 14:47:01.681: ERROR/AndroidRuntime(302):     at android.widget.AbsListView$PerformClick.run(AbsListView.java:1640)

উত্তর:


383

আপনি Intent.ACTION_DIALপরিবর্তে ব্যবহার করতে পারেন Intent.ACTION_CALL। এটি ইতিমধ্যে প্রবেশ করা নম্বর সহ ডায়ালার দেখায়, তবে ব্যবহারকারীকে কল করতে হবে কিনা তা সিদ্ধান্ত নিতে দেয়। অনুমতি ACTION_DIALপ্রয়োজন হয় না CALL_PHONE


ACTION_DIAL অনুমতি প্রয়োজন হয় না, এই একটি গুরুত্বপূর্ণ পার্থক্য সঙ্গে ACTION_CALL অভিপ্রায় :) তুলনায়
maxwellnewage

237

এই ডেমোটি আপনার জন্য সহায়ক হবে ...

কল বোতামে ক্লিক করুন:

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "Your Phone_number"));
startActivity(intent);

ম্যানিফেস্টে অনুমতি:

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

1
"টেল:" এর জন্য +1। পরিবর্তে আমি কল করেছি এবং কোনও উদ্দেশ্য ব্যতিক্রম পাই নি। Tnx
টিনা

এটি কেবল আমার নেক্সাসে কাজ করে না It এটি ফোন নম্বরটি দেখায় ডায়ালারটি খোলে কিন্তু ব্যবহারকারীর মিথস্ক্রিয়া ছাড়াই কলটি শুরু করে না। কোন অভিযুক্তি?
ম্যাথিউস জার্ডিমবি

5
প্রশ্নের উত্তর এবং এই উত্তরের মধ্যে পার্থক্য কী? কীভাবে এটি সমস্যার সমাধান করে?
গ্যাভ্রিয়েল

এটি আমার জন্য স্কাইপ খোলে।
আরজেবি

দয়া করে কল ফোন রান সময় অনুমতিও যুক্ত করুন
রঘু কৃষ্ণন আর

180

আরও মার্জিত বিকল্প:

String phone = "+34666777888";
Intent intent = new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phone, null));
startActivity(intent);

5
পূর্বের উত্তরের মতো ম্যানিফেস্টে কিছু না জুড়েই এটি কাজ করে
পাভলস

4
কোন রানটাইম অনুমতি প্রয়োজন। +1
কাইক

81

আপনার অভিপ্রায় ক্রিয়া ACTION_DIAL ব্যবহার করুন, এইভাবে আপনার কোনও অনুমতি প্রয়োজন হবে না। ACTION_CALL এর সাথে আপনার অনুমতিের কারণটি হ'ল ব্যবহারকারীর কোনও পদক্ষেপ ছাড়াই ফোন কল করা।

Intent intent = new Intent(Intent.ACTION_DIAL);
intent.setData(Uri.parse("tel:0987654321"));
startActivity(intent);

2
আপনার অনুমতি চাওয়ার দরকার নেই এমন ক্ষেত্রে এটি আরও ভাল।
জ্যাকিগৌরভ

1
কোডের দ্বিতীয় লাইনে একটি অনুপস্থিত সেমিকোলন রয়েছে। নিখুঁত উত্তর!
আহেমেড_খান_89

73

সবকিছু ঠিক আছে.

আমি ম্যানিফেস্ট ফাইলে অ্যাপ্লিকেশন ট্যাগের আগে কল অনুমতি ট্যাগ রেখেছি just

এবং এখন প্রতিটি জিনিস ঠিকঠাক কাজ করছে।


2
অনুমতি ছাড়াই এবং ব্যবহারকারীর পক্ষে কলটি না করার সুযোগ ছাড়া কীভাবে প্রায় একই অর্জন করতে হয় তার নীচে আমার উত্তরটি দেখুন।
রিডকুলি

3
: এছাড়াও, টেলিফোনি-কম ডিভাইসের সচেতন হতে stackoverflow.com/a/9300036/693752
Snicolas


31

গুরুত্বপূর্ণ তথ্য:

আপনি যদি ব্যবহার করেন তবে Intent.ACTION_CALLআপনাকে অবশ্যই CALL_PHONEঅনুমতি যুক্ত করতে হবে ।

এটি কেবলমাত্র যদি আপনি চান না যে আপনার অ্যাপ্লিকেশনটি সিম কার্ড নেয় না বা জিএসএম নেই এমন ট্যাবলেটগুলির জন্য গুগল প্লেতে প্রদর্শিত হয়।

আপনার ক্রিয়াকলাপে:

            Intent callIntent = new Intent(Intent.ACTION_CALL);
            callIntent.setData(Uri.parse("tel:" + Constants.CALL_CENTER_NUMBER));
            startActivity(callIntent);

সুস্পষ্ট:

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

সুতরাং এটি যদি আপনার অ্যাপ্লিকেশনটিতে গুরুত্বপূর্ণ বৈশিষ্ট্য না হয় তবে CALL_PHONEঅনুমতি যোগ করা থেকে দূরে থাকার চেষ্টা করুন ।

অন্যান্য সমাধান:

স্ক্রিনে লিখিত নম্বর সহ ফোন অ্যাপটি দেখাতে হবে, সুতরাং ব্যবহারকারীকে কেবল কল বোতামটি ক্লিক করতে হবে:

            Intent dialIntent = new Intent(Intent.ACTION_DIAL);
            dialIntent.setData(Uri.parse("tel:" + Constants.CALL_CENTER_NUMBER));
            startActivity(dialIntent);

এই জন্য কোন অনুমতি প্রয়োজন।


24

কোনও অতিরিক্ত অনুমতি ব্যতিরেকে কেবল সাধারণ অনেলাইনার:

private void dialContactPhone(final String phoneNumber) {
    startActivity(new Intent(Intent.ACTION_DIAL, Uri.fromParts("tel", phoneNumber, null)));
}

18

এই সম্পূর্ণ কোড ব্যবহার করুন

          Intent callIntent = new Intent(Intent.ACTION_DIAL);
          callIntent.setData(Uri.parse("tel:"+Uri.encode(PhoneNum.trim())));
          callIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
          startActivity(callIntent);     

1
এই কৌশলটি আমার পক্ষে কাজ করেছিল, যদিও আমাকে ইন্টেন্ট_একশন_ডিয়াল ইনটেন্ট.অ্যাকশন_সিএলএল-তে পরিবর্তন করতে হয়েছিল।
এ। মালিক

12

ম্যানিফেস্টে অনুমতি অনুরোধ করুন

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

কল করার জন্য এই কোডটি ব্যবহার করুন

Intent in = new Intent(Intent.ACTION_CALL, Uri.parse("tel:99xxxxxxxx"));
try {
    startActivity(in);
} catch (android.content.ActivityNotFoundException ex) {
    Toast.makeText(mcontext, "Could not find an activity to place the call.", Toast.LENGTH_SHORT).show();
}

3
আমি মনে করি আপনার অনুমতিটির দরকার নেই যেহেতু আপনার অ্যাপ্লিকেশনটি নিজেকে কল করছে না, তবে ডেডিকেটেড অ্যাপটিকে (যার অনুমতি রয়েছে) এটি করার জন্য বলছে।
মোস্ট্রাপটস্কি

9

AndroidManLive.xML এ অনুমতি

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

সম্পূর্ণ কোড:

private void onCallBtnClick(){
    if (Build.VERSION.SDK_INT < 23) {
        phoneCall();
    }else {

        if (ActivityCompat.checkSelfPermission(mActivity,
                Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {

            phoneCall();
        }else {
            final String[] PERMISSIONS_STORAGE = {Manifest.permission.CALL_PHONE};
            //Asking request Permissions
            ActivityCompat.requestPermissions(mActivity, PERMISSIONS_STORAGE, 9);
        }
    }
}

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    boolean permissionGranted = false;
    switch(requestCode){
        case 9:
            permissionGranted = grantResults[0]== PackageManager.PERMISSION_GRANTED;
            break;
    }
    if(permissionGranted){
        phoneCall();
    }else {
        Toast.makeText(mActivity, "You don't assign permission.", Toast.LENGTH_SHORT).show();
    }
}

private void phoneCall(){
    if (ActivityCompat.checkSelfPermission(mActivity,
            Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
        Intent callIntent = new Intent(Intent.ACTION_CALL);
        callIntent.setData(Uri.parse("tel:12345678900"));
        mActivity.startActivity(callIntent);
    }else{
        Toast.makeText(mActivity, "You don't assign permission.", Toast.LENGTH_SHORT).show();
    }
}

8

অনুমতিসমূহ:

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

ইন্টেন্ট:

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:0377778888"));
startActivity(callIntent);


5

ইন্টেন্টগুলি ব্যবহার করে একটি কল ক্রিয়াকলাপ করার জন্য, আপনার যথাযথ অনুমতিগুলির জন্য অনুরোধ করা উচিত।

তার জন্য আপনি অ্যান্ড্রয়েড ম্যানিফেস্ট.এক্সএমএল ফাইলে ব্যবহারের অনুমতিগুলি অন্তর্ভুক্ত করেন।

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

তারপরে আপনার ক্রিয়াকলাপে নিম্নলিখিত কোডটি অন্তর্ভুক্ত করুন

if (ActivityCompat.checkSelfPermission(mActivity,
        Manifest.permission.CALL_PHONE) == PackageManager.PERMISSION_GRANTED) {
    //Creating intents for making a call
    Intent callIntent = new Intent(Intent.ACTION_CALL);
    callIntent.setData(Uri.parse("tel:123456789"));
    mActivity.startActivity(callIntent);

}else{
    Toast.makeText(mActivity, "You don't assign permission.", Toast.LENGTH_SHORT).show();
}

4

ডায়ালারের কাছ থেকে কলের জন্য (অনুমতি প্রয়োজন নেই):

   fun callFromDailer(mContext: Context, number: String) {
        try {
            val callIntent = Intent(Intent.ACTION_DIAL)
            callIntent.data = Uri.parse("tel:$number")
            mContext.startActivity(callIntent)
        } catch (e: Exception) {
            e.printStackTrace()
            Toast.makeText(mContext, "No SIM Found", Toast.LENGTH_LONG).show()
        }
    }

অ্যাপ থেকে সরাসরি কল করার জন্য (অনুমতি প্রয়োজন):

  fun callDirect(mContext: Context, number: String) {
        try {
            val callIntent = Intent(Intent.ACTION_CALL)
            callIntent.data = Uri.parse("tel:$number")
            mContext.startActivity(callIntent)
        } catch (e: SecurityException) {
            Toast.makeText(mContext, "Need call permission", Toast.LENGTH_LONG).show()
        } catch (e: Exception) {
            e.printStackTrace()
            Toast.makeText(mContext, "No SIM Found", Toast.LENGTH_LONG).show()
        }
    }

অনুমতি:

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

3

এটি এড়াতে - কেউ অনুমতি প্রবেশের জন্য জিইউআই ব্যবহার করতে পারে। অনুমতি ট্যাগটি কোথায় সন্নিবেশ করানো যায় সেদিকে খেয়াল রাখুন এবং প্রায়শই সঠিক হয় না


2
// Java
String mobileNumber = "99XXXXXXXX";
Intent intent = new Intent();
intent.setAction(Intent.ACTION_DIAL); // Action for what intent called for
intent.setData(Uri.parse("tel: " + mobileNumber)); // Data with intent respective action on intent
startActivity(intent);

// Kotlin
val mobileNumber = "99XXXXXXXX"
val intent = Intent()
intent.action = Intent.ACTION_DIAL // Action for what intent called for
intent.data = Uri.parse("tel: $mobileNumber") // Data with intent respective action on intent
startActivity(intent)

1

অ্যান্ড্রয়েডে নির্দিষ্ট কার্যকারিতার জন্য আপনাকে ম্যানিফেস্ট ফাইলে অনুমতি যুক্ত করতে হবে।

  1. প্রকল্পগুলি AndroidManifest.xML এ যান
  2. অনুমতি ট্যাবে ক্লিক করুন
  3. অ্যাড ক্লিক করুন
  4. অনুমতি ব্যবহার নির্বাচন করুন
  5. নীচে স্ন্যাপশট দেখুনএখানে চিত্র বর্ণনা লিখুন

6. ম্যানিফেস্ট ফাইলটি সংরক্ষণ করুন এবং তারপরে আপনার প্রকল্পটি চালান। আপনার প্রকল্পটি এখন প্রত্যাশা অনুযায়ী চালানো উচিত।


1
আপনি কোন আইডিই ব্যবহার করছেন?
SHA2NK


1
    final public void Call(View view){

    try {

        EditText editt=(EditText)findViewById(R.id.ed1);
        String str=editt.getText().toString();
        Intent intent = new Intent(Intent.ACTION_DIAL, Uri.parse("tel:"+str));
        startActivity(intent);
    }
    catch (android.content.ActivityNotFoundException e){

        Toast.makeText(getApplicationContext(),"App failed",Toast.LENGTH_LONG).show();
    }

1
 if(ContextCompat.checkSelfPermission(
        mContext,android.Manifest.permission.CALL_PHONE) != 
              PackageManager.PERMISSION_GRANTED) {
                    ActivityCompat.requestPermissions((Activity) mContext, new 
                  String[]{android.Manifest.permission.CALL_PHONE}, 0);
                } else {
                    startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "Your Number")));
                }
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.