Skip to content

Sending GPC signals across apps and at the network level #2

Open

Description

@SebastianZimmeck

Nice work, @kasnder!

Together with my students I was looking into GPC on Android a while back. We found two central themes. I am curious what your thinking is.

  1. GPC across apps: does your implementation work on an app-by-app basis? It would be nice if there would be a systems setting where you can turn on GPC for all (or a subset of) apps on a device. At the time, we looked into leveraging shared storage. SharedPreferences may also be useful.
  2. Sending GPC signals at the network level: we were also trying to tackle the issue from the network perspective looking into popular Android HTTP libraries (e.g., okhttp or volley). But we did not have a breakthrough there.

Essentially, these two challenges are the result of not having OS privileges (one could go the route of requesting people to root their devices, but then the user base would be very small).

If you want, I can give you access to the repo with our code and the issue discussions we had. Just let me know.

At the time we were looking into this, we also reached out to a smaller Android OS vendor (at the order of millions of installs) and they were open to getting GPC integrated. I am happy to make the connection if you are interested.

(cc'ing my students @ekuller, @bella-tassone, @JoeChampeau, @katehausladen, @sophieeng, @Jocelyn0830, @OliverWang13)

Activity

  1. coolharsh55 commented on Oct 27, 2022

    @coolharsh55
    Contributor

    Hi. https://developer.android.com/reference/android/content/Context#MODE_WORLD_READABLE states SharedPreferences is deprecated and can no longer be used to get data across apps. Can the alternatives it states be used as ContentProvider to query for the GPC value, and BroadcastReceiver to register to get updates when GPC values are changed?

  2. kasnder commented on Oct 27, 2022

    @kasnder
    Member

    Hi @SebastianZimmeck and @coolharsh55

    Thanks for your input!

    1. GPC across apps: does your implementation work on an app-by-app basis? It would be nice if there would be a systems setting where you can turn on GPC for all (or a subset of) apps on a device. At the time, we looked into leveraging shared storage. SharedPreferences may also be useful.

    This particular implementation, no, but agree that app-by-app basis would be important, so as to exclude those apps one wants to support in terms of data collection. It might not be super important to make a point on these aspects though.

    Android seems to be implementing quite some restrictions in recent versions though, including restrictions on accessing the list of installed apps (android.permission.QUERY_ALL_PACKAGES), so this might be a somewhat tricky one.

    I think the Accessibility API is one of the few ways to retrieve the currently running app without root, which might be useful but also somewhat tricky to set up.

    1. Sending GPC signals at the network level: we were also trying to tackle the issue from the network perspective looking into popular Android HTTP libraries (e.g., okhttp or volley). But we did not have a breakthrough there.

    This seems ideal to align with the proposed W3C specification, but pretty tricky since so many apps use different network libraries..

    Essentially, these two challenges are the result of not having OS privileges (one could go the route of requesting people to root their devices, but then the user base would be very small).

    Yeah, completely agree. Root is not really option, and OS support seems so far unrealistic..

    If you want, I can give you access to the repo with our code and the issue discussions we had. Just let me know.

    That'd be great!

  3. SebastianZimmeck commented on Oct 28, 2022

    @SebastianZimmeck
    CollaboratorAuthor

    It might not be super important to make a point on these aspects though.

    Indeed, in my view, the most useful feature would be to have a setting by which people can set GPC for all apps on a device. The, next step then could be a more fine-grained setting.

    Android seems to be implementing quite some restrictions in recent versions though, ...

    Apps like Uninstaller could be worthwhile to examine. Evidently they have some way of detecting which apps are installed on a device.

    OK, just gave you access to the repo. If you are looking at the closed issues, you can see our considerations and discussions. Not sure how useful the code is at this point. But at least it gives you an idea.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions