首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当发生某些事件时,将电话状态更改为振铃

当发生某些事件时,将电话状态更改为振铃
EN

Stack Overflow用户
提问于 2012-12-07 14:36:31
回答 3查看 1.2K关注 0票数 1

我正在开发一个应用程序,在该应用程序中,当某个事件发生时,我必须将电话状态更改为振铃,例如电话上有某个号码在呼叫。这有可能吗?我有一些广播接收器的想法,它将广播事件广播到我的应用程序,然后我的应用程序将在我的手机上进行任何虚拟的假号码呼叫。请告诉我关于这件事的任何想法。有可能吗?如何开始呢?

任何帮助都是非常感谢的。谢谢!

EN

回答 3

Stack Overflow用户

发布于 2012-12-07 14:52:20

要更改为振铃,请使用TelephonyManager、AudioManager和PhoneStateListener作为:

代码语言:javascript
复制
{
  // USE AudioManager  for Settingringing from vibration
         AudioManager am = (AudioManager)getSystemService(Context.AUDIO_SERVICE);   

         switch (am.getRingerMode()) {   
                 case AudioManager.RINGER_MODE_VIBRATE:   
                 Log.i("MyApp","NORMAL mode");
                 am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
              break;   
            }     
票数 1
EN

Stack Overflow用户

发布于 2012-12-07 14:45:28

您可以添加此代码,以便在某个事件被触发时进行调用。

代码语言:javascript
复制
      String Numb = "tel:" + "your number";
      Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse(Numb));
      startActivity(intent);

并将权限添加到您的清单中。

代码语言:javascript
复制
       <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
票数 0
EN

Stack Overflow用户

发布于 2012-12-07 14:48:56

试试这样的东西

代码语言:javascript
复制
public class Telephone extends BroadcastReceiver {

    private Context mContext;
    private Intent mIntent;

    @Override
    public void onReceive(Context context, Intent intent) {
        mContext = context;
        mIntent = intent;
        TelephonyManager tm = (TelephonyManager)              
                 context.getSystemService(Context.TELEPHONY_SERVICE);
        int events = PhoneStateListener.LISTEN_CALL_STATE;
        tm.listen(phoneStateListener, events);
    }

    private final PhoneStateListener phoneStateListener = 
                                                new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            String callState = "UNKNOWN";
            switch (state) {
            case TelephonyManager.CALL_STATE_IDLE:

                break;
            case TelephonyManager.CALL_STATE_RINGING:
                                // DO YOUR WORK HERE

                break;
            case TelephonyManager.CALL_STATE_OFFHOOK:
                          if(incomingNumber.length() >0){

                                  // incoming call
                                 // DO YOUR WORK HERE when call is received
                                 // SEND SMS HERE
                            }
                           else{
                                      // outgoing call
                              }
                break;
            }

            super.onCallStateChanged(state, incomingNumber);
        }
    };

}

您需要注册一个仅用于接收的PhoneStateListener.LISTEN_CALL_STATE

BroadcastReceiver内部的来电。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13758143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档