更新 1:
我找到问题了!安装应用程序时,未请求用户许可。我手动完成了并且有效。 新问题,如何让应用在启动时请求权限?
原文
我正在 try catch 来电号码,但无济于事!
没有出现错误,这就是问题所在,所以我一定是遗漏了一些细节!
在stackoverflow这边,题目很多,但是都是很老的,答案都不行...
AndroidManifest.xml
<?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>
服务接收者.java
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();
}
}
}
我错过了什么,没有在 toast 中显示数字?
最佳答案
这个问题困扰了我一个星期,看了你的文章后,我解决了这个问题,非常感谢。 它将这一行添加到主要 Activity 中:
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE, Manifest.permission.READ_CALL_LOG}, 1);
关于java - 捕获来电号码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59755610/