Метод не выполняется в API 28 Android - PullRequest
0 голосов
/ 17 мая 2019

Я использовал метод, созданный для чтения SMS-сообщений с определенного номера и загрузки его в просмотр списка с помощью этого вопроса, который я написал. SMS-сообщения определенного номера, не отображаемые на других устройствах Android .

Метод getAllSms (getContext ());больше не вызывается на уровне API 28. Я не понимаю, почему он больше не работает, потому что я ничего не изменил, потому что раньше он работал совершенно нормально.Даже если я поставлю точку останова на то место, где вызывается метод, он просто игнорируется, но на уровне API 22 он работает совершенно нормально.

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
        {
            View view = inflater.inflate(R.layout.fragment_commands_view, container, false);

      if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.READ_SMS)
                        != PackageManager.PERMISSION_GRANTED)
                {

                }
                else
                {
                    // Function to load in SMS messages no longer being called on API 28
                    getAllSms(getContext());
                }

     return view;
}


@WithPermissions(permissions = {Manifest.permission.RECEIVE_SMS, Manifest.permission.READ_SMS})
    @TargetApi(Build.VERSION_CODES.M)
    public void getAllSms(Context context)
    {
        HashSet<String> phoneSet = new HashSet<>();
        phoneSet.add(SelectedPhNo);  // phoneNumber
        long threadId = Telephony.Threads.getOrCreateThreadId(context, phoneSet);
        Uri threadUri = ContentUris.withAppendedId(Telephony.Threads.CONTENT_URI, threadId);

        String[] projection = new String[] {Telephony.MmsSms.TYPE_DISCRIMINATOR_COLUMN, BaseColumns._ID, Telephony.Sms.Conversations.THREAD_ID,
                Telephony.Sms.ADDRESS, Telephony.Sms.BODY, "sort_index", Telephony.Sms.DATE_SENT, Telephony.Sms.DATE,
                Telephony.Sms.READ, Telephony.Sms.TYPE, Telephony.Sms.STATUS, Telephony.Sms.LOCKED,
                Telephony.Sms.ERROR_CODE, Telephony.Sms.SEEN, Telephony.Sms.Inbox.BODY, Telephony.Sms.Sent.BODY};

        Cursor cur = context.getContentResolver().query(threadUri, projection, null, null, "normalized_date desc");
        DatabaseUtils.dumpCursor(cur);

        // Read cursor into an arraylist
        ArrayList<String> mArrayList = new ArrayList<String>();

        int totalSms = cur.getCount();

        if(cur.moveToFirst())
        {
            for(int i = 0; i < totalSms; i++)
            {
                String body = cur.getString(cur.getColumnIndex(Telephony.Sms.BODY));
                String indexDate = cur.getString(cur.getColumnIndex(Telephony.Sms.DATE));

                // Convert string to long variable
                Long date = Long.parseLong(indexDate);

                // Convert millis value to proper format
                Date dateVal = new Date(date);

                //"dd-MMM-yyyy""dd/MM/yyyy"
                SimpleDateFormat format = new SimpleDateFormat("HH:mm:ss  dd-MM-yyyy");
                dateText = format.format(dateVal);

                cur.moveToNext();

                inboxArrayAdapter.add("Command: " + body + "\n" + "Date: " + dateText);

                Log.e("Body", body);
                Log.e("Date", dateText);
            }
        }
    }
...