java - 其可能的 JobScheduler 类实现运行时权限,如 READ_CALL_LOG
问题描述
可能 JobScheduler 类实现运行时权限,如 READ_CALL_LOG
我想从 JobScheduler 读取呼叫日志但未经许可,它靠近我想在 JobScheduler 中添加运行时权限的应用程序,可以吗?
private String getCallDetails() {
MCallLogsDatabase = FirebaseDatabase.getInstance().getReference().child(DataManager.CallLogsRoot);
StringBuffer sb = new StringBuffer();
Cursor managedCursor = getContentResolver().query(CallLog.Calls.CONTENT_URI, null,
null, null, null);
int number = managedCursor.getColumnIndex(CallLog.Calls.NUMBER);
int type = managedCursor.getColumnIndex(CallLog.Calls.TYPE);
int date = managedCursor.getColumnIndex(CallLog.Calls.DATE);
int duration = managedCursor.getColumnIndex(CallLog.Calls.DURATION);
sb.append("Call Details :");
while (managedCursor.moveToNext()) {
String phNumber = managedCursor.getString(number);
String callType = managedCursor.getString(type);
String callDate = managedCursor.getString(date);
Date callDayTime = new Date(Long.valueOf(callDate));
String callDuration = managedCursor.getString(duration);
MCallLogsDatabase.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
if(snapshot.hasChild(MacAddress)){
MCallLogsDatabase.child(MacAddress).removeValue();
}
else {
Log.d("SSSL", phNumber);
Map<String, Object> callmap = new HashMap<String, Object>();
callmap.put(DataManager.CallLogNumber, phNumber);
callmap.put(DataManager.CallLogType, callType);
callmap.put(DataManager.CallLogDate, callDate);
// callmap.put(DataManager.CallLogTime, callDayTime);
callmap.put(DataManager.CallLogDuraction, callDuration);
MCallLogsDatabase.child(MacAddress).push().updateChildren(callmap);
}
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
String dir = null;
int dircode = Integer.parseInt(callType);
switch (dircode) {
case CallLog.Calls.OUTGOING_TYPE:
dir = "OUTGOING";
break;
case CallLog.Calls.INCOMING_TYPE:
dir = "INCOMING";
break;
case CallLog.Calls.MISSED_TYPE:
dir = "MISSED";
break;
}
sb.append("\nPhone Number:--- " + phNumber + " \nCall Type:--- "
+ dir + " \nCall Date:--- " + callDayTime
+ " \nCall duration in sec :--- " + callDuration);
sb.append("\n----------------------------------");
Log.d("TYPE", dir);
}
managedCursor.close();
return sb.toString();
}
解决方案
推荐阅读
- javascript - React 组件未渲染也未显示
- c# - 如何使用控制器摇杆获得 8 方向运动 | 自上而下的 3D 统一
- python - 如何获取 Keras 模型中包含的 TensorFlow 操作
- python - 熊猫选择与多列中可变数量的值匹配的行
- flutter - googleMap构建完成后颤振showInfoWindow
- pyspark - 从 Lag 函数到 pyspark 流 Dstream 中的 updateStateByKey
- android - onDestroy 之后的 Android ViewBinding 句柄片段 null
- excel - VBA Outlook 邮件正文不显示(可能是由于表格通过 vba excel 粘贴到邮件正文中)
- flutter - Flutter:[Cloud_firestore] 发布模式下没有数据
- android - 关于APK安装后生成的文件的权限问题