Неожиданное содержание: //ком. android. Намерение контакта. Возможно нарушение маршрута? - PullRequest
0 голосов
/ 04 августа 2020

Мое приложение должно обрабатывать намерения файлов, что нормально работает. Однако я получаю отчеты cra sh, где, например, к нему маршрутизируется content://com.android.contacts/data/1389.

Эти триггеры java .lang.SecurityException Permission Denial , что ожидается, поскольку у меня нет интерес к чтению контактов и, как таковой, не запрашивать android .permission.READ_CONTACTS .

Я получаю эти отчеты из большого количества Android версий и устройств.

Трассировка стека бесполезна, поскольку она не показывает, откуда исходит намерение.

MyActivity.HandleIntent ()
java.lang.SecurityException: Permission Denial: opening provider com.android.providers.contacts.ContactsProvider2 from ProcessRecord{f8a795ad0 9250:com.myapp/u0a295} (pid=9250, uid=10295) requires android.permission.READ_CONTACTS or android.permission.WRITE_CONTACTS
android.os.Parcel.createException Parcel.java:1966
android.os.Parcel.readException Parcel.java:1934
android.os.Parcel.readException Parcel.java:1884
android.app.IActivityManager$Stub$Proxy.getContentProvider IActivityManager.java:4045
android.app.ActivityThread.acquireProvider ActivityThread.java:6321
android.app.ContextImpl$ApplicationContentResolver.acquireUnstableProvider ContextImpl.java:2825
android.content.ContentResolver.acquireUnstableProvider ContentResolver.java:1835
android.content.ContentResolver.openTypedAssetFileDescriptor ContentResolver.java:1449
android.content.ContentResolver.openAssetFileDescriptor ContentResolver.java:1302
android.content.ContentResolver.openInputStream ContentResolver.java:1022
Caused by: android.os.RemoteException: Remote stack trace:
com.android.server.am.ActivityManagerService.getContentProviderImpl ActivityManagerService.java:15521
com.android.server.am.ActivityManagerService.getContentProviderImpl ActivityManagerService.java:15430
com.android.server.am.ActivityManagerService.getContentProvider ActivityManagerService.java:15995
android.app.IActivityManager$Stub.onTransact$getContentProvider$ IActivityManager.java:11023
android.app.IActivityManager$Stub.onTransact IActivityManager.java:295

В чем может быть причина неправильной маршрутизации намерения в мое приложение?

Любые идеи как воспроизвести эту проблему? В приложении для работы с контактами я не смог найти действие, которое запускает такое действие.

Я понимаю, что такое намерение будет возвращено приложением, которое хочет выбрать такой контакт:

Intent i = new Intent(android.content.Intent.ACTION_PICK);
i.setType(ContactsContract.CommonDataKinds.Phone.CONTENT_TYPE);
startActivityForResult(i, 1);

Но мое воображение не позволяет мне представить, как это окажется в моем приложении, а не в запрашивающем приложении public void onActivityResult(int requestCode, int resultCode, Intent data).

...