je suis revenu au développement widget après mise à niveau vers le dernier SDK et tout à coup mon widget ne au démarrage avec ce message:Android - ne peut pas permettre BroadcastReceiver
ERROR/AndroidRuntime(5296): java.lang.RuntimeException:
Unable to start receiver topjob.widget.SearchWidget:
java.lang.SecurityException: Permission Denial:
attempt to change component state from pid=5296, uid=10057, package uid=10048
Voici deux lignes de code où exception se produit:
@Override
public void onEnabled(Context context) {
PackageManager pm = context.getPackageManager();
pm.setComponentEnabledSetting(new ComponentName("topjob",
".widget.SearchWidgetBroadcastReceiver"),
PackageManager.COMPONENT_ENABLED_STATE_ENABLED,
PackageManager.DONT_KILL_APP);
startAlarm(context, UPDATE_RATE_SEC);
}
donc dans le code ci-dessus startAlarm()
est jamais exécuté depuis pm.setComponentEnabledSetting()
lance le SecurityException
Am Je manque des paramètres de sécurité dans mon manifeste? Actuellement, j'ai:
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
Je développe pour SDK v. 1.5
et il l'habitude de travailler bien
post-scriptum Cela se passe sur le téléphone et l'émulateur
Ce comportement est-il limité à des versions de système d'exploitation particulières de l'émulateur? –
Je ne suis pas en cours d'exécution d'émulateur - c'est directement sur le téléphone. Dernier SDK, plugin Eclipse, Java 6 sur Windows XP – Bostone
Une bonne question, bien posée. – jamesh