Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
SebastianZimmeck opened this issue Oct 27, 2022 · 3 comments
Open

Comments

@SebastianZimmeck
Copy link
Collaborator

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)

@coolharsh55
Copy link
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?

@kasnder
Copy link
Member

kasnder commented Oct 27, 2022

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!

@SebastianZimmeck
Copy link
Collaborator Author

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
Labels
None yet
3 participants