Android में इरादे का उपयोग करके फ़ोन कॉल कैसे करें?




android-intent phone-call (12)

महत्वपूर्ण लेख:

यदि आप Intent.ACTION_CALL उपयोग करते हैं तो आपको CALL_PHONE अनुमति जोड़नी होगी।

इसकी ओकी केवल तभी होती है जब आप नहीं चाहते कि आपका ऐप टैबलेट के लिए दिखाना चाहे जो सिम कार्ड नहीं लेता है या जीएसएम नहीं है।

आपकी गतिविधि में:

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

MANIFEST:

<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);

इसके लिए कोई अनुमति नहीं है।

मैं एंड्रॉइड में कॉल करने के लिए निम्न कोड का उपयोग कर रहा हूं लेकिन यह मुझे सुरक्षा अपवाद दे रहा है कृपया मदद करें।

 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)

AndroidManifest.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();
    }
}

अनुमतियां:

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

आशय:

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

अपने इरादे में कार्रवाई ACTION_DIAL का उपयोग करें, इस तरह आपको किसी भी अनुमति की आवश्यकता नहीं होगी। ACTION_CALL के साथ आपको अनुमति की आवश्यकता के कारण उपयोगकर्ता से किसी भी कार्रवाई के बिना फ़ोन कॉल करना है।

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

आप इसका भी उपयोग कर सकते हैं:

String uri = "tel:" + posted_by.replaceAll("[^0-9|\\+]", "");

इस पूर्ण कोड का प्रयोग करें

          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. प्रोजेक्ट्स AndroidManifest.xml पर जाएं
  2. अनुमति टैब पर क्लिक करें
  3. जोड़ें पर क्लिक करें
  4. उपयोग अनुमति का चयन करें
  5. नीचे स्नैपशॉट देखें

6. मैनिफेस्ट फ़ाइल सहेजें और फिर अपनी परियोजना चलाएं। आपकी परियोजना अब अपेक्षित के रूप में चलनी चाहिए।


बिना किसी अतिरिक्त अनुमति के बस साधारण ऑनलाइनर की आवश्यकता है:

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

यह डेमो आपके लिए सहायक होगा ...

कॉल बटन पर क्लिक करें:

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

मेनिफेस्ट में अनुमति:

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

सब कुछ ठीक है।

मैंने मैनिफेस्ट फ़ाइल में एप्लिकेशन टैग से पहले कॉल अनुमति टैग रखा है

और अब हर चीज ठीक काम कर रही है।


    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();
    }

 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")));
                }




android-phone-call