@RequiresPermission(Manifest.permission.READ_PHONE_STATE) public void onContactInfoComplete(String callId, ContactCacheEntry entry) { DialerCall call = CallList.getInstance().getCallById(callId); if (call != null) { call.getLogState().contactLookupResult = entry.contactLookupResult; LogUtil.i( "StatusBarNotifier.onContactInfoComplete", "buildAndSendNotification 111"); buildAndSendNotification(CallList.getInstance(), call, entry); } }
时间: 2023-02-08 12:33:03 浏览: 81
这是一段Android程序代码。它声明了一个带有注解@RequiresPermission(Manifest.permission.READ_PHONE_STATE)的方法onContactInfoComplete(String callId, ContactCacheEntry entry)。这个方法在收到通话信息后完成联系人信息查找,并将查找结果存储到Call对象的LogState中,最后调用buildAndSendNotification(CallList.getInstance(), call, entry)来构建并发送通知。
相关问题
android.permission.READ_PRECISE_PHONE_STATE
android.permission.READ_PRECISE_PHONE_STATE是一个权限,用于允许应用程序读取精确的电话状态。具体来说,它允许应用程序访问以下两个方法:
1. getSubscriberId():获取设备的唯一标识符,也称为IMSI(国际移动用户识别码)。它返回一个字符串,表示SIM卡的唯一标识符。
2. getVoiceMailAlphaTag():获取语音信箱的标签。它返回一个字符串,表示语音信箱的名称。
以下是一个演示如何使用android.permission.READ_PRECISE_PHONE_STATE权限的示例代码:
```java
// 检查是否有READ_PRECISE_PHONE_STATE权限
if (ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PRECISE_PHONE_STATE) == PackageManager.PERMISSION_GRANTED) {
// 有权限,可以执行相关操作
TelephonyManager telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String subscriberId = telephonyManager.getSubscriberId();
String voiceMailAlphaTag = telephonyManager.getVoiceMailAlphaTag();
// 在这里处理subscriberId和voiceMailAlphaTag的值
} else {
// 没有权限,需要请求权限
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PRECISE_PHONE_STATE}, REQUEST_CODE);
}
```
请注意,为了使用android.permission.READ_PRECISE_PHONE_STATE权限,您需要在AndroidManifest.xml文件中添加以下权限声明:
```xml
<uses-permission android:name="android.permission.READ_PRECISE_PHONE_STATE" />
```
flutter compat added android.permission.WRITE_EXTERNAL_STORAGE android.permission.READ_PHONE_STATE解决实例
为了在Flutter应用中使用WRITE_EXTERNAL_STORAGE和READ_PHONE_STATE权限,需要在AndroidManifest.xml文件中添加以下代码:
```
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
```
然后,在您的Flutter项目中的android/app/build.gradle文件中添加以下依赖项:
```
dependencies {
implementation 'com.android.support:support-compat:28.0.0'
}
```
最后,在您的Flutter项目中的MainActivity.java文件中添加以下代码:
```
import android.os.Bundle;
import io.flutter.app.FlutterActivity;
import io.flutter.plugins.GeneratedPluginRegistrant;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.pm.PackageManager;
public class MainActivity extends FlutterActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
GeneratedPluginRegistrant.registerWith(this);
int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
}
permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.READ_PHONE_STATE);
if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.READ_PHONE_STATE}, 2);
}
}
}
```
这个代码片段将检查WRITE_EXTERNAL_STORAGE和READ_PHONE_STATE权限是否被授予,并提供请求这些权限的选项。当用户授权这些权限后,您的应用程序就可以使用这些权限了。