Java 捕获来电号码 更新1:

Java 捕获来电号码 更新1:,java,android,android-studio,Java,Android,Android Studio,我发现了问题!安装应用程序时,未向用户请求权限。我是手工做的,效果很好新问题,如何让应用程序在启动时请求权限 原文 我正试图捕捉来电号码,但没有用 没有出现错误,这就是问题所在,所以我必须错过一些细节 在stackoverflow上,有很多主题,但都非常陈旧,而且答案不起作用 AndroidManifest.xml 我遗漏了什么没有在祝酒词中显示数字的内容?我已经与这个问题斗争了一周,在阅读了您的条目后,我解决了这个问题,非常感谢。 它正在将此行添加到主要活动: ActivityCompat.r

我发现了问题!安装应用程序时,未向用户请求权限。我是手工做的,效果很好新问题,如何让应用程序在启动时请求权限

原文 我正试图捕捉来电号码,但没有用

没有出现错误,这就是问题所在,所以我必须错过一些细节

在stackoverflow上,有很多主题,但都非常陈旧,而且答案不起作用

AndroidManifest.xml
我遗漏了什么没有在祝酒词中显示数字的内容?

我已经与这个问题斗争了一周,在阅读了您的条目后,我解决了这个问题,非常感谢。 它正在将此行添加到主要活动:


ActivityCompat.requestPermissions(这个新字符串[]{Manifest.permission.READ\u PHONE\u STATE,Manifest.permission.READ\u CALL\u LOG},1)

您确定您拥有获取额外传入号码所需的所有权限吗@O95所需的权限不是我在AndroidManifest.xml中声明的权限?@O95我发现了问题!安装应用程序时,不会向用户请求权限。我是手工做的,效果很好。新问题,如何让应用程序在启动时请求权限?
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="net.aaa.androidcall">

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

    <application
        android:allowBackup="false"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme"
        tools:ignore="GoogleAppIndexingWarning">
        <activity android:name=".MainActivity">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <receiver android:name=".ServiceReceiver" >
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" />
            </intent-filter>
        </receiver>

    </application>

</manifest>
package net.aaaa.androidcall;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import android.view.Gravity;
import android.widget.Toast;

public class ServiceReceiver extends BroadcastReceiver {
    @Override
    public void onReceive(final Context context, Intent intent) {
        if (intent.getAction().equals("android.intent.action.PHONE_STATE")){
            String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
            String Number = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

            Toast toast = Toast.makeText(context, "Number: " +Number+ ", Status: "+ state,Toast.LENGTH_LONG);

            toast.setGravity(Gravity.BOTTOM|Gravity.LEFT,3,0);
            toast.show();
        }
    }
}