У меня есть тестовое приложение, написанное на Xamarin и портированное на Android.Он содержит экспортированный контент-провайдер со следующими данными из файла манифеста.
<provider android:name="md5c7302988dec23c3faede6ee623ad91b8.AppStateProvider" android:exported="true" android:authorities="com.example.myapp.AppStateProvider"/>
Однако я не уверен в том, как запрашивать и распечатывать данные из отдельного отдельного приложения Android, написанного в Android Studio.Я нашел различные учебные пособия и тому подобное, но многие из них устарели, используя более старый метод курсора, а не Content Resolver, поэтому выявляется много ошибок и происходит сбой приложения.
Какой правильный способ следоватьчтобы получить эти данные между приложениями, пожалуйста.
РЕДАКТИРОВАТЬ: Это то, что я использую ContentResolver
Uri yourURI = Uri.parse("content://com.example.myapp.AppStateProvider/AppState");
ContentProviderClient yourCR = getContentResolver().acquireContentProviderClient(yourURI);
try {
Cursor yourCursor = yourCR.query(yourURI, null, null, null, null);
Log.i("stuff", String.valueOf(yourCursor));
} catch (RemoteException e) {
e.printStackTrace();
}
, но это происходит с:
Unable to start activity ComponentInfo{com.cpreader/com.cpreader.MainActivity}: java.lang.SecurityException: Unknown packagename
Удаление кода CP, приложение работает нормально (просто простое действие Hello World)
EDIT: я изменил имя CP, чтобы использовать имя, а не права доступа, и получил ошибку, как и ожидалось Failed to find provider info for md5c7302988dec23c3faede6ee623ad91b8.AppStateProvider
, что означает, что имя органа, которое я имею, является правильным, и он может найти этого провайдера, поэтому что-то еще с именем пакета приводит к сбою
EDIT2:
Следующий кодтакже вылетает с той же ошибкой: Caused by: java.lang.SecurityException: Unknown packagename
ContentResolver cr = getContentResolver();
Cursor cursor = cr.query(uri, null, null, null, null);
if (cursor != null) {
cursor.moveToFirst();
String filePath = cursor.getString(cursor.getColumnIndex("Name"));
cursor.close();
Log.i("stuff", filePath);