user3414107
user3414107

Reputation:

App got crash when i select to call

hi i have to implement some calling functionality in my app but when ever i select a Number for call suddenly my app got crash.

My code is:

public void show_alert(String phon) {

            ArrayList<String> phone = new ArrayList<String>();

            if (!phon.equalsIgnoreCase("")) {
                phone.add(phon);
            }

            final CharSequence[] cs = phone.toArray(new CharSequence[phone.size()]);

            AlertDialog.Builder builder = new AlertDialog.Builder(Contact.this);

            builder.setPositiveButton("Cancel", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();

                }
            });
            builder.setTitle("Would You Like to Call ");
            builder.setItems(cs, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int item) {

                    call(Contact.this, cs[item].toString());

                }
            }).show();
        }

        public void call(Context ctx, String number) {
            try {
                Intent callIntent = new Intent(Intent.ACTION_CALL);
                callIntent.setData(Uri.parse("tel:" + number));
                ctx.startActivity(callIntent);
            } catch (ActivityNotFoundException activityException) {
                Log.e("helloandroid dialing example", "Call failed",
                        activityException);
            }
        }

I dont know what is wrong in my code. please some one help me.

Logcat:

03-20 15:47:12.771: E/AndroidRuntime(29736): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxxxx cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{422a3f38 29736:com.universaltyres/10075} (pid=29736, uid=10075) requires android.permission.CALL_PHONE
 03-20 15:47:12.771: E/AndroidRuntime(29736):   at android.os.Parcel.readException(Parcel.java:1327)
 03-20 15:47:12.771: E/AndroidRuntime(29736):   at android.os.Parcel.readException(Parcel.java:1281)
 03-20 15:47:12.771: E/AndroidRuntime(29736):   at android.app.ActivityManagerProxy.startActivity(ActivityManagerNative.java:1638)
 03-20 15:47:12.771: E/AndroidRuntime(29736):   at android.app.Instrumentation.execStartActivity(Instrumentation.java:1385)
 03-20 15:47:12.771: E/AndroidRuntime(29736):   at android.app.Activity.startActivityForResult(Activity.java:3235)
03-20 15:47:12.771: E/AndroidRuntime(29736):    at android.app.Activity.startActivity(Activity.java:3342)
03-20 15:47:12.771: E/AndroidRuntime(29736):    at com.universaltyres.Contact.call(Contact.java:120)
03-20 15:47:12.771: E/AndroidRuntime(29736):    at com.universaltyres.Contact$2.onClick(Contact.java:111)
03-20 15:47:12.771: E/AndroidRuntime(29736):    at com.android.internal.app.AlertController$AlertParams$3.onItemClick(AlertController.java:924)

Upvotes: 0

Views: 870

Answers (3)

M D
M D

Reputation: 47807

Your logcat clearly said:

3-20 15:47:12.771: E/AndroidRuntime(29736): java.lang.SecurityException: Permission Denial: starting Intent { act=android.intent.action.CALL dat=tel:xxxxxxxxxxxxx cmp=com.android.phone/.OutgoingCallBroadcaster } from ProcessRecord{422a3f38 29736:com.universaltyres/10075} (pid=29736, uid=10075) requires android.permission.CALL_PHONE

You need to add below permission in your manifest.xml file

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

Upvotes: 2

Sanket Pandya
Sanket Pandya

Reputation: 1095

Have you provided CALL permission?

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

Upvotes: 2

Blackbelt
Blackbelt

Reputation: 157437

you should use Intent.ACTION_DIAL instead of Intent.ACTION_CALL. It will bring up the phone dialer, the same way others applications behave (same user experience)

Upvotes: 4

Related Questions