java - 无法在 Android Marshmallow 中将来电号码打印到 logcat

标签 java android android-studio android-logcat

list XML:

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

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


   <application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">

    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <activity
        android:name=".LeadActivity"
        android:label="@string/title_activity_lead"
        android:theme="@style/AppTheme" />


    </application>

这是我的phonestatelistener代码:

private class CallStateListener extends PhoneStateListener {

        LeadActivity la = new LeadActivity();
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {
            // Is called whenever there is a change in call state
            switch (state) {
                case TelephonyManager.CALL_STATE_RINGING:
                    phone_number=incomingNumber;
                    Log.d("Hub","CallStateListener Ringing IncomingNumber:"+ incomingNumber);
                    la.setContactNo(phone_number);
                    checkIt = 1;
                    break;
                case TelephonyManager.CALL_STATE_OFFHOOK:
                    checkIt = 0;
                    break;
                case TelephonyManager.CALL_STATE_IDLE:
                    if (checkIt == 1) {
                        Log.d("Hub","Call Disconnected:"+ incomingNumber);
                        Intent i = new Intent(getBaseContext(),LeadActivity.class);
                       // la.setContactNo(phone_number);
                        getBaseContext().startActivity(i); // service that sends the SMS
                    }
                    break;
            }
        }

    }

这是我的主要 Activity 代码:

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.d("Hub","Main Activity Started");
        ActionBar actionBar = getSupportActionBar();
        actionBar.hide();

        setContentView(R.layout.activity_main);

        mWebView = (WebView) findViewById(R.id.activity_main_webview);


        tm = (TelephonyManager) getBaseContext().getSystemService(Context.TELEPHONY_SERVICE);
        tm.listen(callStateListener, PhoneStateListener.LISTEN_CALL_STATE);

 if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE)!= PackageManager.PERMISSION_GRANTED)
    {

        // Should we show an explanation?
        if (ActivityCompat.shouldShowRequestPermissionRationale(this,Manifest.permission.READ_PHONE_STATE))
        {
            Log.d("ConvergeHub","Already permitted");

        }
        else
        {
            Log.d("ConvergeHub","Need permission");
            ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.READ_PHONE_STATE},MY_PERMISSIONS_REQUEST_READ_CONTACTS);

        }
    }
    if(MY_PERMISSIONS_REQUEST_READ_CONTACTS==PackageManager.PERMISSION_GRANTED)
    {
        Log.d("ConvergeHub","PERMISSION_GRANTED");
    }
    else
    {
        Log.d("ConvergeHub","PERMISSION_DENIED");
    }
        WebSettings webSettings = mWebView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        mWebView.setWebViewClient(new MyAppWebViewClient());

        mWebView.loadUrl("https://xxxx.xxxxxx.com/");


    }

日志会像这样打印

07-01 18:58:06.962 6876-6876/com.xxx.xxx D/Hub: CallStateListener Ringing IncomingNumber:

07-01 18:58:16.921 6876-6876/com.xxx.xxx D/Hub: Call Received:

发现类似问题here没有适当或可接受的解决方案。 我还添加了运行时权限的代码。启动应用程序时会出现一个弹出窗口,我允许应用程序管理电话调用。但结果和以前一样。 谁能建议我哪里可能出错?我在这里错过了什么吗?

最佳答案

您检查过运行时权限吗?

Requesting Permissions at Runtime

关于java - 无法在 Android Marshmallow 中将来电号码打印到 logcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38147208/

相关文章:

安卓 英特尔 VT-x ubuntu

java - Android 异常尝试调用虚方法 'int android.content.Context.checkPermission(java.lang.String, int, int)

java - Sharedpreference 似乎不起作用,无法显示存储的数据

android - 建立Android Studio项目时发生逾时错误

java - 在 Java 下创建进程变慢?

java - 我如何确定我的内存游戏中的哪个方 block 被按下了?

android - 为什么文件存在声明在android中不正确?

java - 如何在Java Spring boot应用程序中实现TLS 1.3?

java - 配置 CheckStyle 而不是 Final 进行局部变量赋值

Android Audio wave示例项目