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="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_UPDATED" />
|
||||
</intent-filter>
|
||||
<meta-data android:name="android.appwidget.provider"
|
||||
android:resource="@xml/track_widget_info" />
|
||||
@@ -254,10 +253,17 @@ limitations under the License.
|
||||
android:description="@string/write_tracks_permission_description"
|
||||
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. -->
|
||||
<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.TRACK_NOTIFICATIONS" />
|
||||
<uses-permission android:name="com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS" />
|
||||
|
||||
<!-- Features required -->
|
||||
<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="end_current_track_action">com.google.android.apps.mytracks.END_CURRENT_TRACK
|
||||
</string>
|
||||
|
||||
<!-- Permissions -->
|
||||
<!-- Permission for MyTracks notifications. -->
|
||||
<string name="mytracks_notifications_permission">com.google.android.apps.mytracks.MYTRACKS_NOTIFICATIONS</string>
|
||||
</resources>
|
||||
|
||||
@@ -524,11 +524,14 @@ limitations under the License.
|
||||
|
||||
<!-- Manifest description (not seen inside the app) -->
|
||||
<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="write_tracks_permission_label">write data to MyTracks and start/stop MyTracks
|
||||
recording</string>
|
||||
<string name="notification_permission_description">Allows the application to receive notifications
|
||||
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>
|
||||
<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) {
|
||||
Intent broadcastIntent =
|
||||
new Intent()
|
||||
.setAction(getString(actionResId))
|
||||
.putExtra(getString(R.string.track_id_broadcast_extra), trackId);
|
||||
sendBroadcast(broadcastIntent,
|
||||
getString(R.string.broadcast_notifications_permission));
|
||||
Intent broadcastIntent = new Intent().setAction(getString(actionResId)).putExtra(
|
||||
getString(R.string.track_id_broadcast_extra), trackId);
|
||||
sendBroadcast(broadcastIntent, getString(R.string.mytracks_notifications_permission));
|
||||
|
||||
SharedPreferences sharedPreferences = getSharedPreferences(Constants.SETTINGS_NAME, 0);
|
||||
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 -->
|
||||
<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_id_broadcast_extra">com.google.android.apps.mytracks.TRACK_ID</string>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user