diff options
author | Antoine Cellerier <dionoea@videolan.org> | 2011-03-09 18:04:05 +0000 |
---|---|---|
committer | Antoine Cellerier <dionoea@videolan.org> | 2011-03-09 18:04:05 +0000 |
commit | 64cf0dd765dc11058a02024032784a9f2eb494b5 (patch) | |
tree | 436e067a43af43a1444763b9fde915213a6051e6 | |
parent | c9190dc188edb3dbea89e7ef1be7bc0dd33eba19 (diff) | |
download | rockbox-64cf0dd765dc11058a02024032784a9f2eb494b5.tar.gz rockbox-64cf0dd765dc11058a02024032784a9f2eb494b5.zip |
Looks like Android 2.3 is more strict when enforcing permissions. Explicitly declare allowed intents under the Service tag in AndroidManifest.xml.
Remove useless rockbox intent class.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@29552 a1c6a512-1295-4272-9138-f99709370657
-rw-r--r-- | android/AndroidManifest.xml | 7 | ||||
-rw-r--r-- | android/src/org/rockbox/widgets/RockboxWidgetProvider.java | 44 |
2 files changed, 25 insertions, 26 deletions
diff --git a/android/AndroidManifest.xml b/android/AndroidManifest.xml index d8264da142..faf404fb14 100644 --- a/android/AndroidManifest.xml +++ b/android/AndroidManifest.xml | |||
@@ -19,7 +19,12 @@ | |||
19 | </intent-filter> | 19 | </intent-filter> |
20 | </activity> | 20 | </activity> |
21 | 21 | ||
22 | <service android:name=".RockboxService"/> | 22 | <service android:name=".RockboxService"> |
23 | <intent-filter> | ||
24 | <action android:name="android.intent.action.MAIN" /> | ||
25 | <action android:name="android.intent.action.MEDIA_BUTTON" /> | ||
26 | </intent-filter> | ||
27 | </service> | ||
23 | 28 | ||
24 | <receiver android:name=".Helper.MediaButtonReceiver$MediaReceiver" | 29 | <receiver android:name=".Helper.MediaButtonReceiver$MediaReceiver" |
25 | android:enabled="true" | 30 | android:enabled="true" |
diff --git a/android/src/org/rockbox/widgets/RockboxWidgetProvider.java b/android/src/org/rockbox/widgets/RockboxWidgetProvider.java index c6f3baf76c..4a012c7124 100644 --- a/android/src/org/rockbox/widgets/RockboxWidgetProvider.java +++ b/android/src/org/rockbox/widgets/RockboxWidgetProvider.java | |||
@@ -117,8 +117,8 @@ public class RockboxWidgetProvider extends AppWidgetProvider | |||
117 | if (state.enablePrev) | 117 | if (state.enablePrev) |
118 | { | 118 | { |
119 | views.setOnClickPendingIntent(R.id.prev, | 119 | views.setOnClickPendingIntent(R.id.prev, |
120 | RockboxMediaIntent.newPendingIntent(context, | 120 | newPendingIntent(context, |
121 | KeyEvent.KEYCODE_MEDIA_PREVIOUS)); | 121 | KeyEvent.KEYCODE_MEDIA_PREVIOUS)); |
122 | } | 122 | } |
123 | else | 123 | else |
124 | views.setViewVisibility(R.id.prev, View.GONE); | 124 | views.setViewVisibility(R.id.prev, View.GONE); |
@@ -127,8 +127,8 @@ public class RockboxWidgetProvider extends AppWidgetProvider | |||
127 | if (state.enablePlayPause) | 127 | if (state.enablePlayPause) |
128 | { | 128 | { |
129 | views.setOnClickPendingIntent(R.id.playPause, | 129 | views.setOnClickPendingIntent(R.id.playPause, |
130 | RockboxMediaIntent.newPendingIntent(context, | 130 | newPendingIntent(context, |
131 | KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)); | 131 | KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE)); |
132 | } | 132 | } |
133 | else | 133 | else |
134 | views.setViewVisibility(R.id.playPause, View.GONE); | 134 | views.setViewVisibility(R.id.playPause, View.GONE); |
@@ -137,8 +137,8 @@ public class RockboxWidgetProvider extends AppWidgetProvider | |||
137 | if (state.enableNext) | 137 | if (state.enableNext) |
138 | { | 138 | { |
139 | views.setOnClickPendingIntent(R.id.next, | 139 | views.setOnClickPendingIntent(R.id.next, |
140 | RockboxMediaIntent.newPendingIntent(context, | 140 | newPendingIntent(context, |
141 | KeyEvent.KEYCODE_MEDIA_NEXT)); | 141 | KeyEvent.KEYCODE_MEDIA_NEXT)); |
142 | } | 142 | } |
143 | else | 143 | else |
144 | views.setViewVisibility(R.id.next, View.GONE); | 144 | views.setViewVisibility(R.id.next, View.GONE); |
@@ -147,8 +147,8 @@ public class RockboxWidgetProvider extends AppWidgetProvider | |||
147 | if (state.enableStop) | 147 | if (state.enableStop) |
148 | { | 148 | { |
149 | views.setOnClickPendingIntent(R.id.stop, | 149 | views.setOnClickPendingIntent(R.id.stop, |
150 | RockboxMediaIntent.newPendingIntent(context, | 150 | newPendingIntent(context, |
151 | KeyEvent.KEYCODE_MEDIA_STOP)); | 151 | KeyEvent.KEYCODE_MEDIA_STOP)); |
152 | } | 152 | } |
153 | else | 153 | else |
154 | views.setViewVisibility(R.id.stop, View.GONE); | 154 | views.setViewVisibility(R.id.stop, View.GONE); |
@@ -190,24 +190,18 @@ public class RockboxWidgetProvider extends AppWidgetProvider | |||
190 | appWidgetManager.updateAppWidget(appWidgetId, views); | 190 | appWidgetManager.updateAppWidget(appWidgetId, views); |
191 | } | 191 | } |
192 | 192 | ||
193 | private static class RockboxMediaIntent extends Intent | 193 | public static PendingIntent newPendingIntent(Context context, int keycode) |
194 | { | 194 | { |
195 | private RockboxMediaIntent(Context c, int keycode) | 195 | /* Use keycode as request to code to prevent successive |
196 | { | 196 | * PendingIntents from overwritting one another. |
197 | super(ACTION_MEDIA_BUTTON, Uri.EMPTY, c, RockboxService.class); | 197 | * This seems hackish but at least it works. |
198 | putExtra(EXTRA_KEY_EVENT, new KeyEvent(KeyEvent.ACTION_UP, | 198 | * see: http://code.google.com/p/android/issues/detail?id=863 |
199 | keycode)); | 199 | */ |
200 | } | 200 | Intent intent = new Intent(Intent.ACTION_MEDIA_BUTTON, Uri.EMPTY, |
201 | 201 | context, RockboxService.class); | |
202 | public static PendingIntent newPendingIntent(Context c, int keycode) | 202 | intent.putExtra(Intent.EXTRA_KEY_EVENT, |
203 | { | 203 | new KeyEvent(KeyEvent.ACTION_UP, keycode)); |
204 | /* Use keycode as request to code to prevent successive | 204 | return PendingIntent.getService(context, keycode, intent, 0); |
205 | * PendingIntents from overwritting one another. | ||
206 | * This seems hackish but at least it works. | ||
207 | * see: http://code.google.com/p/android/issues/detail?id=863 | ||
208 | */ | ||
209 | return PendingIntent.getService(c, keycode, new RockboxMediaIntent(c, keycode), 0); | ||
210 | } | ||
211 | } | 205 | } |
212 | } | 206 | } |
213 | 207 | ||