Намеренное пользовательское разрешение не работает
Моя непосредственная проблема решена согласно моему ответу ниже. Моя среда (ПК + устройства) не допускает пользовательских разрешений в сборках DEBUG.
Я убежден, что смог запустить сборки DEBUG несколько недель назад - отсюда и описание "периодической" ошибки.
ОБНОВЛЕНИЕ 2Код, синхронизированный на компьютере другого разработчика, прекрасно работает на его устройстве в режиме DEBUG через Eclipse. На моих устройствах не работает со своей машины.
Кроме того, сборка DEBUG с моей машины отлично работает на этом другом устройстве.
Это приводит меня к вопросу, если что-то пошло не так на моих устройствах?
У меня прерывистый«Отказ в разрешении» проблема с пользовательским разрешениемIntents
, Это один из тех, где код находится в производстве и работает, но иногда при создании новых сборок он перестает работать. Мне только удалось исправить это по счастливой случайности, прежде чем, через процесс перезагрузки (устройство и компьютер), очистить проект, удалить / переустановить, повторить и т. Д ... это недопустимо.
Насколько я вижу, я делаю все правильно для пользовательских разрешений на моемIntents
что я вещаю в моем приложении. Но logcat выдаёт мне обычные ошибки:
на 4.2.1 (Galaxy Nexus) и 4.2.2 (Nexus 7), или
W / ActivityManager (2002): Отказ в разрешении: получение намерения {act = A_ACTION flg = 0x10} для ProcessRecord {41a12748 31496: com.test / 10115} (pid = 31496, uid = 10115) требует A_PERMISSION из-за отправителя com.test ( UID 10115)на 4.0 (S2) и 2.3.3 (Samsung Ace).
т.е. стандартные ошибки.
Мой манифест говорит:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test"
android:versionCode="1"
android:versionName="4.10.0.3" >
<permission
android:name="A_PERMISSION"
android:description="@string/broadcast_permission_desc"
android:label="@string/broadcast_permission_label"
android:permissionGroup="@string/broadcast_permission_group"
android:protectionLevel="signature" />
<uses-permission android:name="A_PERMISSION" />
etc.....
Эти строки определены как (fwiw):
<string name="broadcast_permission_label">Private Broadcast</string>
<string name="broadcast_permission_desc">This permission allows the necessary components of the application to receive private broadcasts that are sent within the application.</string>
<string name="broadcast_permission_name">A_PERMISSION</string>
<string name="broadcast_permission_group">A_GROUP</string>
У меня есть метод в моем базовом подклассе APPLICATION, который я использую для вещания:
public void sendBroadcast(Intent i)
{
// hardcoded custom permission
super.sendBroadcast(i, "A_PERMISSION");
}
Я РЕГИСТРАЦИЯ для моегоBroadcastReceiver
изнутриFragment
нравится:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// hardcoded custom permission
MyApp.getInstance().registerReceiver(myReceiver, myFilter,
"A_PERMISSION", null);
}
Я проверил следующие связанные вопросы без радости:
Отказ в разрешении Android: намерение вещанияКак использовать пользовательские разрешения в Android?Как объявить пользовательские разрешения в AndroidЯ думаю, что охватывает аналогичные вопросы на этом сайте.
Моя проблема в том, что он прерывистый, но тратит много времени, т. Е. Некоторые сборки работают на всех телефонах, некоторые сборки не работают на всех телефонах.
Интересно, если это проблема в одной из платформ (либо ОС Android, или, возможно, Eclipse / Android SDK). К сожалению, мой поиск в Google только приводит меня к более общим проблемам с общими решениями.