forked from upstream-mirrors/OpenTracks
Protects MyTracks notifications based on the settings bit.
Only sends broadcast notifications if allowed by the settings bit. Introduces a permission for internal MyTracks communication. Thus the MyTracks app widget can use this permission to always receive broadcast notifications when a track starts and stops.
This commit is contained in:
@@ -198,7 +198,6 @@ limitations under the License.
|
|||||||
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
<action android:name="android.appwidget.action.APPWIDGET_UPDATE" />
|
||||||
<action android:name="com.google.android.apps.mytracks.TRACK_STARTED" />
|
<action android:name="com.google.android.apps.mytracks.TRACK_STARTED" />
|
||||||
<action android:name="com.google.android.apps.mytracks.TRACK_STOPPED" />
|
<action android:name="com.google.android.apps.mytracks.TRACK_STOPPED" />
|
||||||
<action android:name="com.google.android.apps.mytracks.TRACK_UPDATED" />
|
|
||||||
</intent-filter>
|
</intent-filter>
|
||||||
<meta-data android:name="android.appwidget.provider"
|
<meta-data android:name="android.appwidget.provider"
|
||||||
android:resource="@xml/track_widget_info" />
|
android:resource="@xml/track_widget_info" />
|
||||||
@@ -254,10 +253,17 @@ limitations under the License.
|
|||||||
android:description="@string/write_tracks_permission_description"
|
android:description="@string/write_tracks_permission_description"
|
||||||
android:protectionLevel="dangerous" />
|
android:protectionLevel="dangerous" />
|
||||||
|
|
||||||
|
<!-- Permission to get MyTracks broadcasts. For internal MyTracks communication. -->
|
||||||
|
<permission android:name="com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS"
|
||||||
|
android:permissionGroup="android.permission-group.LOCATION"
|
||||||
|
android:label="@string/mytracks_notifications_permission_label"
|
||||||
|
android:description="@string/mytracks_notifications_permission_description"
|
||||||
|
android:protectionLevel="signature" />
|
||||||
|
|
||||||
<!-- We read and write raw track data, obviously. -->
|
<!-- We read and write raw track data, obviously. -->
|
||||||
<uses-permission android:name="com.google.android.apps.mytracks.READ_TRACK_DATA" />
|
<uses-permission android:name="com.google.android.apps.mytracks.READ_TRACK_DATA" />
|
||||||
<uses-permission android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
|
<uses-permission android:name="com.google.android.apps.mytracks.WRITE_TRACK_DATA" />
|
||||||
<uses-permission android:name="com.google.android.apps.mytracks.TRACK_NOTIFICATIONS" />
|
<uses-permission android:name="com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS" />
|
||||||
|
|
||||||
<!-- Features required -->
|
<!-- Features required -->
|
||||||
<uses-feature android:name="android.hardware.location" android:required="true"/>
|
<uses-feature android:name="android.hardware.location" android:required="true"/>
|
||||||
|
|||||||
@@ -53,4 +53,8 @@ limitations under the License.
|
|||||||
<string name="start_new_track_action">com.google.android.apps.mytracks.START_NEW_TRACK</string>
|
<string name="start_new_track_action">com.google.android.apps.mytracks.START_NEW_TRACK</string>
|
||||||
<string name="end_current_track_action">com.google.android.apps.mytracks.END_CURRENT_TRACK
|
<string name="end_current_track_action">com.google.android.apps.mytracks.END_CURRENT_TRACK
|
||||||
</string>
|
</string>
|
||||||
|
|
||||||
|
<!-- Permissions -->
|
||||||
|
<!-- Permission for MyTracks notifications. -->
|
||||||
|
<string name="mytracks_notifications_permission">com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|||||||
@@ -524,11 +524,14 @@ limitations under the License.
|
|||||||
|
|
||||||
<!-- Manifest description (not seen inside the app) -->
|
<!-- Manifest description (not seen inside the app) -->
|
||||||
<string name="notification_permission_label">receive MyTracks notifications</string>
|
<string name="notification_permission_label">receive MyTracks notifications</string>
|
||||||
|
<string name="mytracks_notifications_permission_label">receive MyTracks notifications</string>
|
||||||
<string name="read_tracks_permission_label">read MyTracks data</string>
|
<string name="read_tracks_permission_label">read MyTracks data</string>
|
||||||
<string name="write_tracks_permission_label">write data to MyTracks and start/stop MyTracks
|
<string name="write_tracks_permission_label">write data to MyTracks and start/stop MyTracks
|
||||||
recording</string>
|
recording</string>
|
||||||
<string name="notification_permission_description">Allows the application to receive notifications
|
<string name="notification_permission_description">Allows the application to receive notifications
|
||||||
when MyTracks starts or stops a recording.</string>
|
when MyTracks starts or stops a recording.</string>
|
||||||
|
<string name="mytracks_notifications_permission_description">receive MyTracks notifications
|
||||||
|
</string>
|
||||||
<string name="read_tracks_permission_description">Allows the application to read MyTracks data.
|
<string name="read_tracks_permission_description">Allows the application to read MyTracks data.
|
||||||
</string>
|
</string>
|
||||||
<string name="write_tracks_permission_description">Allows the application to write data to
|
<string name="write_tracks_permission_description">Allows the application to write data to
|
||||||
|
|||||||
@@ -1036,12 +1036,14 @@ public class TrackRecordingService extends Service {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void sendTrackBroadcast(int actionResId, long trackId) {
|
private void sendTrackBroadcast(int actionResId, long trackId) {
|
||||||
Intent broadcastIntent =
|
Intent broadcastIntent = new Intent().setAction(getString(actionResId)).putExtra(
|
||||||
new Intent()
|
getString(R.string.track_id_broadcast_extra), trackId);
|
||||||
.setAction(getString(actionResId))
|
sendBroadcast(broadcastIntent, getString(R.string.mytracks_notifications_permission));
|
||||||
.putExtra(getString(R.string.track_id_broadcast_extra), trackId);
|
|
||||||
sendBroadcast(broadcastIntent,
|
SharedPreferences sharedPreferences = getSharedPreferences(Constants.SETTINGS_NAME, 0);
|
||||||
getString(R.string.broadcast_notifications_permission));
|
if (sharedPreferences.getBoolean(getString(R.string.share_data_key), false)) {
|
||||||
|
sendBroadcast(broadcastIntent, getString(R.string.broadcast_notifications_permission));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -23,8 +23,6 @@ limitations under the License.
|
|||||||
|
|
||||||
<!-- Broadcast notification Intent constants -->
|
<!-- Broadcast notification Intent constants -->
|
||||||
<string name="track_started_broadcast_action">com.google.android.apps.mytracks.TRACK_STARTED</string>
|
<string name="track_started_broadcast_action">com.google.android.apps.mytracks.TRACK_STARTED</string>
|
||||||
<string name="track_paused_broadcast_action">com.google.android.apps.mytracks.TRACK_PAUSED</string>
|
|
||||||
<string name="track_resumed_broadcast_action">com.google.android.apps.mytracks.TRACK_RESUMED</string>
|
|
||||||
<string name="track_stopped_broadcast_action">com.google.android.apps.mytracks.TRACK_STOPPED</string>
|
<string name="track_stopped_broadcast_action">com.google.android.apps.mytracks.TRACK_STOPPED</string>
|
||||||
<string name="track_id_broadcast_extra">com.google.android.apps.mytracks.TRACK_ID</string>
|
<string name="track_id_broadcast_extra">com.google.android.apps.mytracks.TRACK_ID</string>
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user