首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Android = TelephonyManager (Intent.ACTION_CALL)

Android = TelephonyManager (Intent.ACTION_CALL)
EN

Stack Overflow用户
提问于 2017-05-13 15:08:22
回答 1查看 961关注 0票数 0

TelephonyManager状态空闲检测到CallEnded变量的真值时,我想进行调用。

第一个调用正常进行,但是当从OFFHOOK更改为空闲时,我需要执行一个新的调用意图,但没有出现调用。

我错过了什么?

耽误您时间,实在对不起。

代码语言:javascript
复制
import android.Manifest;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.support.v4.app.ActivityCompat;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {

private Boolean CallEnded = false;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

final TelephonyManager telephoneM = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);

PhoneStateListener listener = new PhoneStateListener() {

        public void onCallStateChanged(int state, String incomingNumber) {


            switch (state) {

                case TelephonyManager.CALL_STATE_IDLE:

                    if(CallEnded){

                     performDial();

                    }


                    break;


                case TelephonyManager.CALL_STATE_RINGING:

                    break;


                case TelephonyManager.CALL_STATE_OFFHOOK:

                  CallEnded=true;                       

            }
        }
    };


    telephoneM.listen(listener, PhoneStateListener.LISTEN_CALL_STATE);


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


button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            performDial();

        }
    });

  }

  private void performDial() {

    Intent dial = new Intent(Intent.ACTION_CALL);
    dial.setData(Uri.parse("tel:911"));

    if (ActivityCompat.checkSelfPermission(MainActivity.this,     Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED){

        return;
    }

 }

清单

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

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-05-14 08:57:20

第一个问题是你不允许ACTION_CALL,一个像911一样的紧急号码,你不是一个系统应用程序。该意图将转换为ACTION_DIAL意图,导致系统电话应用程序出现,并允许用户手动拨打电话号码,如果她选择。

我会首先尝试一个标准的电话号码,以确保这不是问题。

第二个问题涉及到在Android上两次调用相同的意图。在某些情况下,Android可能检测到完全相同的意图,而忽略了新的意图。如果这可能是问题所在,请尝试在url的数据中添加一些不断变化的值,例如:

代码语言:javascript
复制
Intent dial = new Intent(Intent.ACTION_CALL);
dial.setData(Uri.parse("tel:212-555-1234" + "?time=" + System.currentTimeMillis()));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43954652

复制
相关文章

相似问题

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