首页 > 解决方案 > 其可能的 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();
}

标签: javaandroid

解决方案


推荐阅读