Android Call Application"如何"

时间:2014-03-25 11:28:23

标签: android call

我有这个非常基本的代码,应该作为一个调用应用程序。 一切都是硬编码的。

根据我需要/想要创建的应用程序,我找不到有用的教程。

我的问题很大!任何人都可以帮我创建一个CallApplication

我认为

要求很简单

需要能够拨打号码

这是我目前的代码,正如所说它是非常基本的,但我被卡住了^^

非常感谢任何帮助!

import android.app.Activity;
    import android.content.Context;
    import android.content.Intent;
    import android.net.Uri;
    import android.os.Bundle;
    import android.telephony.PhoneStateListener;
    import android.telephony.TelephonyManager;
    import android.util.Log;
    import android.view.View;
    import android.view.View.OnClickListener;
    import android.widget.Button;

    public class MainActivity extends Activity {

        final Context context = this;
        private Button btn;

        public void onCreate(Bundle savedInstanceState) {

            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);

            btn = (Button) findViewById(R.id.button);

            PhoneCallListener phoneCallListener = new PhoneCallListener();
            TelephonyManager telManager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
            telManager.listen(phoneCallListener, PhoneStateListener.LISTEN_CALL_STATE);

            // add button listener
            btn.setOnClickListener(new OnClickListener() {

                @Override
                public void onClick(View view) {

                    Intent phoneCallIntent = new Intent(Intent.ACTION_CALL);
                    phoneCallIntent.setData(Uri.parse("tel:123456"));
                    startActivity(phoneCallIntent);

                }

            });

        }

        // monitor phone call states
        private class PhoneCallListener extends PhoneStateListener {

            String TAG = "LOGGING PHONE CALL";

            private boolean phoneCalling = false;

            @Override
            public void onCallStateChanged(int state, String incomingNumber) {

                if (TelephonyManager.CALL_STATE_RINGING == state) {
                    // phone ringing
                    Log.i(TAG, "RINGING, number: " + incomingNumber);
                }

                if (TelephonyManager.CALL_STATE_OFFHOOK == state) {
                    // active
                    Log.i(TAG, "OFFHOOK");

                    phoneCalling = true;
                }

                // When the call ends launch the main activity again
                if (TelephonyManager.CALL_STATE_IDLE == state) {

                    Log.i(TAG, "IDLE");

                    if (phoneCalling) {

                        Log.i(TAG, "restart app");

                        // restart app
                        Intent i = getBaseContext().getPackageManager()
                                .getLaunchIntentForPackage(
                                        getBaseContext().getPackageName());

                        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
                        startActivity(i);

                        phoneCalling = false;
                    }

                }
            }
        }

    }

1 个答案:

答案 0 :(得分:1)

根据@SeeSharp评论。

我猜您的要求是删除硬编码的联系人。

方式1:

将来自用户的输入联系起来(EditText,设计用户界面中的示例)。

方式2:

使用Getting a Result from an Activity与“联系人应用”联系。

startActivityForResult()联系人应用程序从android.provider.ContactsContract选择联系人。更多信息请访问:thisthis

阅读ContactsContract


注意:请将您的问题/问题解释得足够清楚,以便理解。

希望这会有所帮助!!