How to save users data individually and provide them if someone requests it - Android Developer Previews

Hey, according to GDPR, the app should take the consent of users if they want the app to collect data about them or not? also if they can request their saved data anytime and the developer (app owner) is responsible for returning the app data.
How would I do that exactly? Is there any library doing that or something easy? Please let me know.
Thanks

waqasyounis334 said:
Hey, according to GDPR, the app should take the consent of users if they want the app to collect data about them or not? also if they can request their saved data anytime and the developer (app owner) is responsible for returning the app data.
How would I do that exactly? Is there any library doing that or something easy? Please let me know.
Thanks
Click to expand...
Click to collapse
It depends. What kind of data and app are we talking about? Analytics and crash reporting data? Most analytics and crash reporting services provide extensive informations about this topic.

the for GDPR form, Google has already published a library available on github for that
for your second question, you should allow the user to download its data, remove it... in other words, the user should have control over its data, this is only applicable if you're the host

Well, android lets you know if the user is from EU and in that case the Gdpr rules apply and you need to request consent from them if im not mistaken.
Code:
public void getconsentInf(){
consentInformation = ConsentInformation.getInstance(this);
String[] publisherIds = {"pub-..."};
consentInformation.requestConsentInfoUpdate(publisherIds, new ConsentInfoUpdateListener() {
@Override
public void onConsentInfoUpdated(ConsentStatus consentStatus) {
isEuropeanUser= ConsentInformation.getInstance(this).isRequestLocationInEeaOrUnknown();
// User's consent status successfully updated.
if(isEuropeanUser){
switch (consentStatus)
(...)
About delivering the information to the user, ive never saved the users information so im not sure, depends how your app is structured.

Related

[RFC] URL Fetch service

Have any of you app developers faced this situation: You have an app that needs to download data from the Internet, but don't want to add the Internet permission to your application, because it may deter some users from installing the app. Moreover, the data may be large and may need to be saved to the SD card, which requires yet another permission. You also need to ensure that a network is available currently, which means more permissions (WiFi state, etc).
Here's my proposed solution: A URL fetch service
This will be a simple app which accepts URL fetch requests from other applications and fetches them (HTTP GET) from the internet as a background service. Upon completion, the data can be returned to the application as a byte stream.
Since this is based on a callback, the network need not be currently available. The service will (optionally) queue the request and fetch whenever a network is available.
Another useful feature would be avoiding duplicate requests. For example, an app may want to fetch some data periodically, say every two hours. But if the network is not available for two days, then only one request should be made when the network becomes available, not 50! This could be done by letting the app assign a unique id to the request. Requests that have the same id will over-write other requests from the same app with the same id.
Logging and Filtering
From the user point of view, there is tremendous advantage in having a centralized URL Fetcher, because she will be able to Log the requests that go through it, and also filter some requests. For example, she could filter an app that she doesn't want to be updated (for whatever reason).
Distribution:
The app will be open-source and made available on all App markets and also as a direct APK download.
The only hurdle to this idea that I can see is that the app will have to be installed separately by the user. The problem will be reduced over time as more and more apps use this service. So the chances of the app being already present will increase. Also, custom ROMs might pre-package this app, so it will be present by default.
__________________________________
Your thoughts?
Update:
I have begun coding this up. You can follow / contribute here:
https://github.com/hrj/SafeNet/
Questions or Problems Should Not Be Posted in the Development Forum
Please Post in the Correct Forums
Moving to Q&A
For an app like that, you are not going to be able to not allow the internet permission. It needs it to fetch the URL (from the internet) so it has to use it... Unless you have a huge database of all URL's stored on your sd card .
Theonew said:
For an app like that, you are not going to be able to not allow the internet permission. It needs it to fetch the URL (from the internet) so it has to use it
Click to expand...
Click to collapse
Yes indeed. The fetch service app will have the Internet permission, and the read/write to SD card permission. The idea is to reduce the number of entities that the user has to trust.
And since the service app will be open-source, the user can compile her own version and install it. In that case, she doesn't even have to trust anyone else.
I have put up a tentative project and have some working code already in my local repository. If you would like to follow the progress or would like to contribute, here's the GitHub link:
https://github.com/hrj/SafeNet/
cheers!
h_r_j said:
the user can compile her own version and install it. In that case, she doesn't even have to trust anyone else.
Click to expand...
Click to collapse
Great. One thing... all the users of your app aren't only female...
Theonew said:
Great. One thing... all the users of your app aren't only female...
Click to expand...
Click to collapse
I guess you are right.. I didn't check thoroughly
But seriously, he / she / it doesn't really matter. I don't like typing "he or she" in every sentence. So, I just pick between those words randomly.
h_r_j said:
I guess you are right.. I didn't check thoroughly
But seriously, he / she / it doesn't really matter. I don't like typing "he or she" in every sentence. So, I just pick between those words randomly.
Click to expand...
Click to collapse
Just put "they" .

Hosts file for Ad Blocking

Hi guys, I am presenting you the latest hosts file to block ad in apps. It works for me for all apps I installed on my player (Angry birds etc.).
How to use:
1. Download attached file and unzip it;
2. Copy the hosts file to your player;
3. Open system/etc with RE and replace the original hosts file and set permission "rw-r-r" (remeber mount R/W before and R/O afterwards);
4. Reboot and you'll enjoy ad free apps from now on.
Why not just use the adfree project? Or join it?
Sent from my Triumph using Tapatalk
Guess that's how ad free works. It patches hosts files.
Sent from my YP-G70 using xda premium
njguyc said:
Hi guys, I am presenting you the latest hosts file to block ad in apps. It works for me for all apps I installed on my player (Angry birds etc.).
How to use:
1. Download attached file and unzip it;
2. Copy the hosts file to your player;
3. Open system/etc with RE and replace the original hosts file and set permission "rw-r-r" (remeber mount R/W before and R/O afterwards);
4. Reboot and you'll enjoy ad free apps from now on.
Click to expand...
Click to collapse
Ad a developer i am disgusted with people blocking ads in their applications. I understand why you guys are doing this and yeh they can be really annoying! Blocking ads on a webpage is much more understanding than blocking from the application. Nowadays our screens are bigger than 4 inches, can you really not give up a little bit to help out the person that spends hours a week keeping up with a free application to make you happy. I spend hours a week writing my apps and I make NO PROFIT all the money I make from ads pays for my server costs.
I don't think people consider these things when they block ads. I'll admit I had ads blocked for a while but it's because the ROM I installed came with it.
Your not bad people for wanting to do this but please consider how morally incorrect it is to block these ads.If there is another developer reading this and also hates how people do this go ahead and add this to your MainActivity. It checks their hosts file for admob (or you can make it which ever ad you use) and if admob exists it pulls some tricker on the user. I've seen developers ask for SU in the app and then once they get it wipe all the admob lines from hosts file. Sorry guys but this needs to be done, your stealing from the developers.
BufferedReader in = null;
Boolean result = true;
try {
in = new BufferedReader(new InputStreamReader(new FileInputStream("/etc/hosts")));
String line;
while ((line = in.readLine()) != null)
{
if (line.contains("admob"))
{
result = false;
break;
}
}
} catch(Exception e){}
if(result == false){
Toast.makeText(getApplicationContext(),"admob detected in /etc/hosts", Toast.LENGTH_LONG).show();
adBlockerFound();
}
public void adblockerFound(){
/**
Do all the bad stuff here. I usually use a dialog and simply notify the user but I still let them use the application. I pretty much give them a guilt trip. But if you wanna be nasty you can do this.finish();
**/
}
TheWall279 said:
Ad a developer i am disgusted with people blocking ads in their applications. I understand why you guys are doing this and yeh they can be really annoying! Blocking ads on a webpage is much more understanding than blocking from the application. Nowadays our screens are bigger than 4 inches, can you really not give up a little bit to help out the person that spends hours a week keeping up with a free application to make you happy. I spend hours a week writing my apps and I make NO PROFIT all the money I make from ads pays for my server costs.
I don't think people consider these things when they block ads. I'll admit I had ads blocked for a while but it's because the ROM I installed came with it.
Your not bad people for wanting to do this but please consider how morally incorrect it is to block these ads.If there is another developer reading this and also hates how people do this go ahead and add this to your MainActivity. It checks their hosts file for admob (or you can make it which ever ad you use) and if admob exists it pulls some tricker on the user. I've seen developers ask for SU in the app and then once they get it wipe all the admob lines from hosts file. Sorry guys but this needs to be done, your stealing from the developers.
BufferedReader in = null;
Boolean result = true;
try {
in = new BufferedReader(new InputStreamReader(new FileInputStream("/etc/hosts")));
String line;
while ((line = in.readLine()) != null)
{
if (line.contains("admob"))
{
result = false;
break;
}
}
} catch(Exception e){}
if(result == false){
Toast.makeText(getApplicationContext(),"admob detected in /etc/hosts", Toast.LENGTH_LONG).show();
adBlockerFound();
}
public void adblockerFound(){
/**
Do all the bad stuff here. I usually use a dialog and simply notify the user but I still let them use the application. I pretty much give them a guilt trip. But if you wanna be nasty you can do this.finish();
**/
}
Click to expand...
Click to collapse
I understand and agree with you on the fact that these ads 'compensate' the effort. I test an app and buy the paid add-free version if I like the app and intend to keep using it.
Yet I use an ad-blocking hosts file, because I consider displaying ads eating up my data plan to be stealing from me and that I do have a right to refuse getting spamed on my phone (in the Web browser I mean).
But by no means can I accept nor agree with you when you say it is ok to request su rights and change the system (even if it's just modifying or removing the hosts file) without requesting permission and clearly stating what your app is about to do and the consequences this has, that is a troian-like behaviour and is totally inappropriate and plainly inacceptable !
Check for ad-blocking, if you find some, pop-up an alert saying you disagree and hereby refuse your app to run, that is all the right you have on my device when I agree to install your app.
So suggesting to " Do all the bad stuff here. I usually use a dialog and simply notify the user but I still let them use the application. I pretty much give them a guilt trip. But if you wanna be nasty you can do this. " is a no go, sorry !
JP.
Sent from my custom ARHD 11.0.0 / Yank555.lu JB kernel v1.3 (Linux 3.0.38) powered Samsung Galaxy S3 using xda premium
TheWall279 said:
Ad a developer i am disgusted with people blocking ads in their applications. I understand why you guys are doing this and yeh they can be really annoying! Blocking ads on a webpage is much more understanding than blocking from the application. Nowadays our screens are bigger than 4 inches, can you really not give up a little bit to help out the person that spends hours a week keeping up with a free application to make you happy. I spend hours a week writing my apps and I make NO PROFIT all the money I make from ads pays for my server costs.
I don't think people consider these things when they block ads. I'll admit I had ads blocked for a while but it's because the ROM I installed came with it.
Your not bad people for wanting to do this but please consider how morally incorrect it is to block these ads.If there is another developer reading this and also hates how people do this go ahead and add this to your MainActivity. It checks their hosts file for admob (or you can make it which ever ad you use) and if admob exists it pulls some tricker on the user. I've seen developers ask for SU in the app and then once they get it wipe all the admob lines from hosts file. Sorry guys but this needs to be done, your stealing from the developers.
BufferedReader in = null;
Boolean result = true;
try {
in = new BufferedReader(new InputStreamReader(new FileInputStream("/etc/hosts")));
String line;
while ((line = in.readLine()) != null)
{
if (line.contains("admob"))
{
result = false;
break;
}
}
} catch(Exception e){}
if(result == false){
Toast.makeText(getApplicationContext(),"admob detected in /etc/hosts", Toast.LENGTH_LONG).show();
adBlockerFound();
}
public void adblockerFound(){
/**
Do all the bad stuff here. I usually use a dialog and simply notify the user but I still let them use the application. I pretty much give them a guilt trip. But if you wanna be nasty you can do this.finish();
**/
}
Click to expand...
Click to collapse
I don't do it with every app, but in cases like angry birds then its absolutely necessary because the ads prevent you from doing stuff in game. With ads that don't get in the way of using the app it's fine but when you put ads in really inconvenient places that's when I go to patching that.
There's an easier way to block ads...... but ads help support the devs.
Sent from my SPH-D710
Thanks!!
Thank YOU!!!
TheWall279 said:
Ad a developer i am disgusted with people blocking ads in their applications. I understand why you guys are doing this and yeh they can be really annoying! Blocking ads on a webpage is much more understanding than blocking from the application. Nowadays our screens are bigger than 4 inches, can you really not give up a little bit to help out the person that spends hours a week keeping up with a free application to make you happy. I spend hours a week writing my apps and I make NO PROFIT all the money I make from ads pays for my server costs.
I don't think people consider these things when they block ads. I'll admit I had ads blocked for a while but it's because the ROM I installed came with it.
Your not bad people for wanting to do this but please consider how morally incorrect it is to block these ads.If there is another developer reading this and also hates how people do this go ahead and add this to your MainActivity. It checks their hosts file for admob (or you can make it which ever ad you use) and if admob exists it pulls some tricker on the user. I've seen developers ask for SU in the app and then once they get it wipe all the admob lines from hosts file. Sorry guys but this needs to be done, your stealing from the developers.
BufferedReader in = null;
Boolean result = true;
try {
in = new BufferedReader(new InputStreamReader(new FileInputStream("/etc/hosts")));
String line;
while ((line = in.readLine()) != null)
{
if (line.contains("admob"))
{
result = false;
break;
}
}
} catch(Exception e){}
if(result == false){
Toast.makeText(getApplicationContext(),"admob detected in /etc/hosts", Toast.LENGTH_LONG).show();
adBlockerFound();
}
public void adblockerFound(){
/**
Do all the bad stuff here. I usually use a dialog and simply notify the user but I still let them use the application. I pretty much give them a guilt trip. But if you wanna be nasty you can do this.finish();
**/
}
Click to expand...
Click to collapse
Doesn't work anymore on latest jelly bean retard. Screw your ads, oh yea, and permissions pro will straight smack down your weak ass app perm
P.s. there's other methods of ad blocking besides having a host file in system/ect. I just have crossbreader and have the target host file in a custom location. Boom, you're little hack can't find it. I will never have any ads and always be one step ahead with the latest and greatest
Or you can turn of data or WiFi
Sent from my YP-G70 using xda app-developers app
heet1 said:
Or you can turn of data or WiFi
Sent from my YP-G70 using xda app-developers app
Click to expand...
Click to collapse
You are right, but some apps have ads and need Wi-Fi. That is when you use adblock.
The Wall279, please list apps you develop so I can avoid them like the plague, please.
Sent from my YP-G70 using Tapatalk 2
heet1 said:
Or you can turn of data or WiFi
Sent from my YP-G70 using xda app-developers app
Click to expand...
Click to collapse
Cool you have the same device i do.How exactly do i "set permission "rw-r-r" (remeber mount R/W before and R/O afterwards);"?
I would really appreciate it.
heet1 said:
Or you can turn of data or WiFi
Sent from my YP-G70 using xda app-developers app
Click to expand...
Click to collapse
If I don't click on ads, the developer of the app that have ads get money or not?
If yes, I see that an ads is a webpage with no zoom on it (Times ago i saw an ads that were scrollable in my player and not scrollable in my n7000 ), can anyone make an ads invisible (or can run it in an under-game level (like photoshop)of an app?
Work on Debian ?
TheWall279 said:
if(result == false){
Click to expand...
Click to collapse
As a developer you should be ashamed of yourself.

[Q] Is RobotMedia in-app billing lib usable?

Hi forum,
I'm implementing in-app billing into one of my apps, and I must admit it's quite complicated. I stumbled upon this lib that seems to make things a little easier. But it wasn't updated for a long time, and I was wondering it it was usable in production.
Anyone has any experience with it?
github.com/robotmedia/AndroidBillingLibrary
(…still cannot post real links, nor in development forum)
And what about alternatives
It seems no one is using this lib. And what are you using for in-app billing? Since amazon has started it's own solution, and each billing solution is limited to a specific market, I would think there would be a way to implement a cross-market solution.
New and Improved in-app billing library
There is a new library called The SOOMLA Project - you can google it or use project dot soom dot la.
this project is an In-App Billing Library for Android and includes:
Simplifies the Google Play API
Storage for currency/goods balances
Improved security
Event handling
Sample App for reference
It's open source so you can either use it as reference or just take the SDK.
Thank you, I'll check it out.
thibaultj said:
Thank you, I'll check it out.
Click to expand...
Click to collapse
Soomla is a good instrument. But i cant understand one thing.
May be its a property of markets, but no property of Soomla.... why displaying price on my device in currency, that i pointed at the market.
i want to have price in $ fo US, euro for EuroCountries.... etc
when i push Buy button, there is price in right currency (native for account ). Problem is only for
PurchasableVirtualItem item = (PurchasableVirtualItem)StoreInfo.GetItemByItemId(itemId);
if(item == null)
return "--.--";
PurchaseWithMarket purchaseType = (PurchaseWithMarket)item.PurchaseType;
return purchaseType.MarketItem.MarketPrice;

[CLOSED][APP][XPOSED][6.0+] Use Xposed without developing a module

{
"lightbox_close": "Close",
"lightbox_next": "Next",
"lightbox_previous": "Previous",
"lightbox_error": "The requested content cannot be loaded. Please try again later.",
"lightbox_start_slideshow": "Start slideshow",
"lightbox_stop_slideshow": "Stop slideshow",
"lightbox_full_screen": "Full screen",
"lightbox_thumbnails": "Thumbnails",
"lightbox_download": "Download",
"lightbox_share": "Share",
"lightbox_zoom": "Zoom",
"lightbox_new_window": "New window",
"lightbox_toggle_sidebar": "Toggle sidebar"
}
XPrivacyLua custom hook definitions
By using XPrivacyLua you can define Xposed hooks and apply them to any app at run time (so, rebooting your device is not necessary). You can write hook code on your device in Lua, which is quite easy to learn.
See the documentation about how to define hooks.
Although XPrivacyLua has 'privacy' in its name, new hooks don't need to be privacy related at all. Disabling the built in privacy related hooks is a matter of selecting another collection of hooks.
This XDA thread is meant to discuss defining hooks, with the restriction that hook definitions must serve a legally allowed purpose. This XDA thread is not meant to make you a developer, so at least some development experience is expected, which means that you'll need to be able to figure out where to hook yourself and that you'll need to be able to write Lua scripts yourself.
XDA:DevDB Information
XPrivacyLua hook definitions, Xposed for all devices (see above for details)
Contributors
M66B
Xposed Package Name:
Version Information
Status: Beta
Created 2018-01-28
Last Updated 2018-04-01
Could there be a generic "always return true" lua script?
And when building a definition, what does it mean to be in a group and collection? Do I just put anything there or do I have to call them something particular?
Well, I'm trying but I'm lost. Just trying to setAnalyticsCollectionEnabled
https://firebase.google.com/support/guides/disable-analytics
Code:
public void setAnalyticsCollectionEnabled (boolean enabled) = false
supposedly disables Firebase Analytics (which apparently 67% of the top 200 apps use).
My definition looks like
Collection: privacy
Group: firebase
Name: firebase.analytics
author: whatever
class: com.google.firebase.analytics
method:setAnalyticsCollectionEnabled
parameter type: void
return type: boolean
min/max sdk: 1/999
lua script: @generic_false_value I suppose I can use this?
Even if this looks valid, it feels like maybe this wouldn't fire unless certain other things happen first? Looking at your hooks.json for google analytics it looks like you had to maybe set a chain of events to occur to get to the point of controlling the method you intend to make changes?
jawz101 said:
Could there be a generic "always return true" lua script?
And when building a definition, what does it mean to be in a group and collection? Do I just put anything there or do I have to call them something particular?
Well, I'm trying but I'm lost. Just trying to setAnalyticsCollectionEnabled
https://firebase.google.com/support/guides/disable-analytics
Code:
public void setAnalyticsCollectionEnabled (boolean enabled) = false
supposedly disables Firebase Analytics (which apparently 67% of the top 200 apps use).
My definition looks like
Collection: privacy
Group: firebase
Name: firebase.analytics
author: whatever
class: com.google.firebase.analytics
method:setAnalyticsCollectionEnabled
parameter type: void
return type: boolean
min/max sdk: 1/999
lua script: @generic_false_value I suppose I can use this?
Even if this looks valid, it feels like maybe this wouldn't fire unless certain other things happen first? Looking at your hooks.json for google analytics it looks like you had to maybe set a chain of events to occur to get to the point of controlling the method you intend to make changes?
Click to expand...
Click to collapse
The built-in scripts are not meant for general use because they might change over time breaking stuff that depends on them. Therefore imported definitions are not linked against the built-in scripts. If needed, you can simply copy and paste the Lua script from another (built in) definition. Copying guarantees your definition will keep working, even when the built-in scripts are changed or even removed.
Calling setAnalyticsCollectionEnabled requires access to an instance of FirebaseAnalytics, which apps needs to get by calling getInstance. So, hook getInstance to call setAnalyticsCollectionEnabled(false) and hook setAnalyticsCollectionEnabled to prevent an app from turning analytics on again.
Restricting Google Analytics (available in the next release of XPrivacyLua) works similar:
https://github.com/M66B/XPrivacyLua/blob/master/app/src/main/assets/ga_getinstance.lua
https://github.com/M66B/XPrivacyLua/blob/master/app/src/main/assets/ga_setdryrun.lua
You can also wait until I have added this ...
But firebase isn't necessarily the same thing, right?
jawz101 said:
But firebase isn't necessarily the same thing, right?
Click to expand...
Click to collapse
No, Google Analytics and Firebase Analytics are not the same and need different definitions.
Restricting Firebase Analytics works properly with these hook definitions:
https://github.com/M66B/XPrivacyLua/commit/1708fc6e4a15cef85cb973f5c08286d90d3ca806
jawz101 said:
And when building a definition, what does it mean to be in a group and collection? Do I just put anything there or do I have to call them something particular?
Click to expand...
Click to collapse
With the latest version of XPrivacyLua / companion app you can change the collection of hooks to use in XPrivacyLua. The default is to use the collection 'Privacy'. You can define your own collection by definition hooks with a new collection name. There can only be one collection active at one time, so if you want to add your own definitions to the built-in privacy collection you'll have to use the collection 'Privacy'. Basically collections exists to allow using XPrivacyLua for things other than privacy.
Groups are listed in the XPrivacyLua app and make it easy to apply a group of hooks to one or more apps. XPrivacyLua cannot and will not handle applying individual hooks to keep things simple, but I might add this to the pro companion app in the near feature. For now you can rename a group of an existing hook definition to be able to apply it separately in XPrivacyLua.
Edit: this has been clarified in the documentation too now: https://github.com/M66B/XPrivacyLua/blob/master/DEFINE.md
I still have some questions on when,where,how etc.... but I will wait until I can dedicate more time to playing with this.
I do have a feature request.
could there be a sort of drop down box that queries all valid entries for each item when creating a custom definition.
for example...
when creating a custom definition, when taping on the line for group, you would just type a new group (as it is now) but if there was a drop down arrow at the end of the line that could give a list of currently used groups and then the user could just click the listed group instead of typing and it would auto-fill that field.
maybe even more useful would be for the other items like Name,Class, Method etc...
where it could show possible entries. That would help a lot.
... I turned on notifications for your new Firebase rules. I would think a bunch of apps I have use Firebase Analytics. @M66B Have you seen any apps trigger it yet?
Even if the app imported Firebase Analytics library and gathers Firebase Analytics but never uses the setAnalyticsCollectionEnabled() method in its own code would it mean this hook will never trigger?
With the latest version of XPrivacyLua / companion app you can change the collection of hooks to use in XPrivacyLua. The default is to use the collection 'Privacy'. You can define your own collection by definition hooks with a new collection name. There can only be one collection active at one time, so if you want to add your own definitions to the built-in privacy collection you'll have to use the collection 'Privacy'. Basically collections exists to allow using XPrivacyLua for things other than privacy.
Click to expand...
Click to collapse
Thanks:highfive:.
This is just a suggestion but if this was my app I would break these 2 elements out to separate screens from the definition builder. You would define collections and groups in a separate spot, and then when building rules the collections and groups would pull in as a selectable dropdown. Avoids typos and helps to explain how there can be only one active collection for XPrivacyLua.
mnjm9b said:
I still have some questions on when,where,how etc.... but I will wait until I can dedicate more time to playing with this.
I do have a feature request.
could there be a sort of drop down box that queries all valid entries for each item when creating a custom definition.
for example...
when creating a custom definition, when taping on the line for group, you would just type a new group (as it is now) but if there was a drop down arrow at the end of the line that could give a list of currently used groups and then the user could just click the listed group instead of typing and it would auto-fill that field.
maybe even more useful would be for the other items like Name,Class, Method etc...
where it could show possible entries. That would help a lot.
Click to expand...
Click to collapse
I will see what I can do for collection and group, but all the other fields are flexible and depend on the hook.
jawz101 said:
... I turned on notifications for your new Firebase rules. I would think a bunch of apps I have use Firebase Analytics. @M66B Have you seen any apps trigger it yet?
Even if the app imported Firebase Analytics library and gathers Firebase Analytics but never uses the setAnalyticsCollectionEnabled() method in its own code would it mean this hook will never trigger?
Click to expand...
Click to collapse
An app will normally not disable/enable analytics given the default is enabled and the user has mostly no choice in this. So see this hook as a safeguard to prevent an app enabling analytics again after we disabled it in another hook
M66B said:
An app will normally not disable/enable analytics given the default is enabled and the user has mostly no choice in this. So see this hook as a safeguard to prevent an app enabling analytics again after we disabled it in another hook
Click to expand...
Click to collapse
Would there be a way to introduce the app to calling it? Or maybe that's what you're implying. Also, have you noticed that system and google apps seem to gray out the read identifiers permission? Ex: set read identifiers as restricted on Android Webview or Google Photos/Maps/Google TTS. Turns pink Get out of XPrivacyLua and open it again. Read Identifiers is gray. (I'm on LineageOS if that matters)
jawz101 said:
Would there be a way to introduce the app to calling it? Or maybe that's what you're implying. Also, have you noticed that system and google apps seem to gray out the read identifiers permission? Ex: set read identifiers as restricted on Android Webview or Google Photos/Maps/Google TTS. Turns pink Get out of XPrivacyLua and open it again. Read Identifiers is gray. (I'm on LineageOS if that matters)
Click to expand...
Click to collapse
Normally an apps doesn't call the function. Maybe if the user can choose to opt in or opt out, but this is rarely the case.
The other thing should go into the XPrivacyLua XDA thread, but I will look into it anyway.
M66B said:
I will see what I can do for collection and group, but all the other fields are flexible and depend on the hook.
Click to expand...
Click to collapse
Thanks, That's a good start.
Maybe if the "PRO" app takes off enough for you to bother you could charge extra for the expanded feature of having the drop lists change depending on the choices made?
I did have a moment to look over a definition I was playing with for "TIME"
it serves no real purpose so I gave up early but if I could get a better understanding on why it doesn't work it could help with actual ones.
using the FINGERPRINT example I made several other entries that all worked fine but this one caused issue.
I assumed it was because according to https://developer.android.com/reference/android/os/Build.html the type for TIME wasn't "String" but "Long"
this is the last one I tried...
Code:
{
"collection": "Privacy",
"group": "Read.Device",
"name": "Build.TIME",
"author": "M66B",
"className": "android.os.Build",
"methodName": "#TIME",
"parameterTypes": [],
"returnType": "long",
"minSdk": 1,
"maxSdk": 999,
"enabled": true,
"optional": false,
"usage": true,
"notify": false,
"luaScript": "function after(hook, param)\n param:setResult("unknown")\n return true\nend\n"
}
I was also playing with "SUPPORTED_ABIS" which also didn't work and the type was "Sting []" instead of just "String" so I was thinking that was the problem also.
@mnjm9b You are returning a string (series of characters) as a long (number). Try returning just a number (without the quotes).
String[] is an array (mulitple strings), so you need to return an array as well. But I don't know how to do that in Lua right now
Namnodorel said:
@mnjm9b You are returning a string (series of characters) as a long (number). Try returning just a number (without the quotes).
String[] is an array (mulitple strings), so you need to return an array as well. But I don't know how to do that in Lua right now
Click to expand...
Click to collapse
You are 100% right.
Returning a string array is not trivial. Look at 'generic_empty_string_array.lua' about how to do this.
Namnodorel said:
@mnjm9b You are returning a string (series of characters) as a long (number). Try returning just a number (without the quotes).
String[] is an array (mulitple strings), so you need to return an array as well. But I don't know how to do that in Lua right now
Click to expand...
Click to collapse
so in my example the returnType instead of "long" should be a number like 0 without quotes?
I tried that and it still doesn't work.
---------- Post added at 08:55 PM ---------- Previous post was at 08:54 PM ----------
M66B said:
You are 100% right.
Returning a string array is not trivial. Look at 'generic_empty_string_array.lua' about how to do this.
Click to expand...
Click to collapse
thanks for this, I guess I am in WAY over my head.
mnjm9b said:
so in my example the returnType instead of "long" should be a number like 0 without quotes?
I tried that and it still doesn't work.
Click to expand...
Click to collapse
No. the return type was correct. That specifies what type of object you are expected to return. What you need to change is what you then actually return, which is
Code:
param:setResult("unknown")
to
Code:
param:setResult(12345678)
@M66B
Thank you for your work, if i understand right, you provide us an programmable interface that will execute command lines written in Lua language without having to create a complete module in JAVA for XPosed?
From what i understood in your initial post, you indicate that we must install your module "XPrivacyLua", then that one disposes there after of the possibility to apply for the applications which one wishes, lines of codes written in Lua language and which do not necessarily have to relate to the logic of rights of access concerning privacy?
If yes then we must necessarily install XPrivacyLua even if in view of all your work provided on it the basic functions do not interest me forcibly?
All this seems to be promising however :good:
Rom said:
@M66B
Thank you for your work, if i understand right, you provide us an programmable interface that will execute command lines written in Lua language without having to create a complete module in JAVA for XPosed?
Click to expand...
Click to collapse
Yes.
Rom said:
From what i understood in your initial post, you indicate that we must install your module "XPrivacyLua", then that one disposes there after of the possibility to apply for the applications which one wishes, lines of codes written in Lua language and which do not necessarily have to relate to the logic of rights of access concerning privacy?
Click to expand...
Click to collapse
Yes.
Rom said:
If yes then we must necessarily install XPrivacyLua even if in view of all your work provided on it the basic functions do not interest me forcibly?
All this seems to be promising however :good:
Click to expand...
Click to collapse
You'll need XPrivacyLua to install and run defined Xposed hooks written in Lua, but you don't need to use the built in privacy related hooks.
The companion app allows you to switch to another collection of hooks you've written, in effect disabling the built-in privacy related hooks.
Try it and I will help you when needed and in the process I will update the documentation where needed.

[MOD][XPOSED][NEW] Grindr Plus

Grindr Plus - Extend the limits of Grindr!​I am pleased to present Grindr Plus, a mod for Grindr that adds new features to the popular dating app!
Precedents​A similar mod already exists (https://forum.xda-developers.com/t/mod-xposed-grindrmod-new.3807621/) although it hasn't been maintained for quite a long time.
Within the range of possibilities and options offered by the Xposed API, the main goal is to improve the experience in this dating app as much as possible.
I'm also implementing some features requested by users in official Grindr feedback (https://grindr.uservoice.com/forums/912631-grindr-feedback). Some requests are very simple to implement and today I do not understand why the official Grindr team has not been in charge of carrying them out, something that makes lots of people very angry. It is time for users to be heard once and for all.!
Little by little we will add more features. You can collaborate on the project and contribute your own ideas through my GitHub repository! https://github.com/ElJaviLuki/GrindrPlus
Mod Features​(Depending on the version of the client and module you're using, some features may not be available or may work buggy.)
Allow mocking locations (WARNING: Abusing this feature may result in a permanent ban)
Advanced features:
Unlimited cascade view.
Unlocked 'Explore mode'.
Advanced search filters.
See 'Read' and 'Typing...' message states.
Allow taking screenshots in any part of the app (including albums and expiring photos).
Unlimited expiring photos.
Remove expiration on incoming expiring photos, allowing to see them any number of times you want.
Extra profile fields in the so-called CruiseViewHolder ('Profile ID', and exact time of 'Last seen')
Make videocalls even if you didn't start a chat with the recipient.
Access to some user-hidden features (developer features)
More accurate online status from other users. (Now, the green dot from other profiles goes off after 3 minutes of inactivity.) Inspired in the feedback made at: https://grindr.uservoice.com/forums/912631-grindr-feedback/suggestions/34555780-more-accurate-online-status-go-offline-when-clos
Allow unlimited taps (no 24h restriction)
"N/A" when Last Seen profile field is not available (= 0)
New profile field: Body Mass Index (BMI)
Check client version before hooking (as a security measure for avoiding possible crashes and bans*)
Ability to see who viewed your profile even if you have "Show Me In Viewed Me List" disabled.
Ability to remove messages from anyone, any time.
*Read the Disclaimer!
Bugs​
Incognito mode is kinda buggy (it turns off after a little while)
How to install​
Install the Xposed Framework and its app (Xposed, EDXposed, etc.)
Download the Grindr Plus module.
Activate the module in the Xposed Installer.
Reboot your device.
Done!
Troubleshooting​My Grindr app suddenly stops when the module is installed.​Check if the module supports the app version. Grindr has lots of obfuscated symbols that change in each app update and the module couldn't work (or couldn't work properly)
Contributing​This project is open to any kind of contribution. Feel free to open an issue or a pull request or submit an issue or suggestion!
GitHub - ElJaviLuki/GrindrPlus: Making Grindr funnier than ever before!
Making Grindr funnier than ever before! Contribute to ElJaviLuki/GrindrPlus development by creating an account on GitHub.
github.com
Credits​As an open source project, you're free to inspire yourself from this code. However, please DON'T copy it and release it as your own (kanging). Give the proper credit and reference to the original project (https://github.com/ElJaviLuki/GrindrPlus) and its contributors.
Main contributor: https://github.com/ElJaviLuki
Additional credits in the Github repo (since I don't I will be able to edit this post, if new people join to the project)
Disclaimer​This module is neither affiliated with nor endorsed by the official Grindr app. It is provided for free with no warranty of any kind. Use at your own risk! I am not responsible for lost chats, user data, unexpected bans or any other problems incurred from the use of this module. This mod does not collect any personal data nor does it display ads of any kind. No earnings are generated or collected from the use of this software. This project is open source so you can check all these facts by your own!
Download​https://github.com/ElJaviLuki/GrindrPlus/releases <- THAT is the official download repo page for the mod.
Again: Make sure that the module version is compatible with your Grindr client version, otherwise you can expect bugs and/or crashes.
I am NOT responsible for any damage that may be incurred by downloading a modified version of this mod that could have been uploaded any website that is not THAT one (I mean that includes viruses, ads or other strange things).
ElJaviLuki said:
Grindr Plus - Extend the limits of Grindr!​I am pleased to present Grindr Plus, a mod for Grindr that adds new features to the popular dating app!
Precedents​A similar mod already exists (https://forum.xda-developers.com/t/mod-xposed-grindrmod-new.3807621/) although it hasn't been maintained for quite a long time.
Within the range of possibilities and options offered by the Xposed API, the main goal is to improve the experience in this dating app as much as possible.
I'm also implementing some features requested by users in official Grindr feedback (https://grindr.uservoice.com/forums/912631-grindr-feedback). Some requests are very simple to implement and today I do not understand why the official Grindr team has not been in charge of carrying them out, something that makes lots of people very angry. It is time for users to be heard once and for all.!
Little by little we will add more features. You can collaborate on the project and contribute your own ideas through my GitHub repository! https://github.com/ElJaviLuki/GrindrPlus
Mod Features​(Depending on the version of the client and module you're using, some features may not be available or may work buggy.)
- Allow mocking locations (WARNING: Abusing this feature may result in a permanent ban)
- Grant most of the Xtra and Unlimited features.
- Unlimited cascade view.
- Unlocked 'Explore mode'.
- Advanced search filters.
- See 'Read' and 'Typing...' message states.
- Allow taking screenshots in any part of the app (including albums and expiring photos).
- Unlimited expiring photos.
- Remove expiration on incoming expiring photos, allowing to see them any number of times you want.
- Extra profile fields in the so-called CruiseViewHolder ('Profile ID', and exact time of 'Last seen')
- Make videocalls even if you didn't start a chat with the recipient.
- Access to some user-hidden features (developer features)
- More accurate online status from other users. (The green dot from other profiles goes off after 3 minutes of inactivity.)
- Allow unlimited taps (no 24h restriction)
Bugs​* Incognito mode is kinda buggy (it turns off after a little while)
How to install​
Install the Xposed Framework and its app (Xposed, EDXposed, etc.)
Download the Grindr Plus module.
Activate the module in the Xposed Installer.
Reboot your device.
Done!
Troubleshooting​My Grindr app suddenly stops when the module is installed.​Check if the module supports the app version. Grindr has lots of obfuscated symbols that change in each app update and the module couldn't work (or couldn't work properly)
Contributing​This project is open to any kind of contribution. Feel free to open an issue or a pull request or submit an issue or suggestion!
GitHub - ElJaviLuki/GrindrPlus: Making Grindr funnier than ever before!
Making Grindr funnier than ever before! Contribute to ElJaviLuki/GrindrPlus development by creating an account on GitHub.
github.com
Credits​As an open source project, you're free to inspire yourself from this code. However, please DON'T copy it and release it as your own (kanging). Give the proper credit and reference to the original project (https://github.com/ElJaviLuki/GrindrPlus) and its contributors.
Main contributor: https://github.com/ElJaviLuki
Additional credits in the Github repo (since I don't I will be able to edit this post, if new people join to the project)
Disclaimer​This module is neither affiliated with nor endorsed by the official Grindr app. It is provided for free with no warranty of any kind. Use at your own risk! I am not responsible for lost chats, user data, unexpected bans or any other problems incurred from the use of this module. This mod does not collect any personal data nor does it display ads of any kind. No earnings are generated or collected from the use of this software. This project is open source so you can check all these facts by your own!
Download​https://github.com/ElJaviLuki/GrindrPlus/releases <- THAT is the official download repo page for the mod.
Again: Make sure that the module version is compatible with your Grindr client version, otherwise you can expect bugs and/or crashes.
I am NOT responsible for any damage that may be incurred by downloading a modified version of this mod that could have been uploaded any website that is not THAT one (I mean that includes viruses, ads or other strange things).
Click to expand...
Click to collapse
Fantastic work! Thank you for forking this project. I love you! <3
Works perfect on my OnePlus 7 Pro with KOSP 2.7 (A12.1)!
1 Crash of App but then no problems!
onoakino said:
Fantastic work! Thank you for forking this project. I love you! <3
Click to expand...
Click to collapse
This project was not forked from anywhere though haha
ElJaviLuki said:
This project was not forked from anywhere though haha
Click to expand...
Click to collapse
My mistake. I should've said thank you for starting this whole new project. Seriously, this mod is lit!
New release - v1.1​New features:
- "N/A" when Last Seen profile field is not available (= 0)
- New profile field: Body Mass Index (BMI)
- Check client version before hooking (as a security measure for avoiding possible crashes and bans*)
Releases · ElJaviLuki/GrindrPlus
Making Grindr funnier than ever before! Contribute to ElJaviLuki/GrindrPlus development by creating an account on GitHub.
github.com
* Read the Disclaimer in the first message!
ElJaviLuki said:
New release - v1.1
Click to expand...
Click to collapse
Thanks to your great work I now can enjoy (again) some extra features!
I installed version 1.0 without any problem. Today I tried to install new version 1.1 but to no avail. I'm using EdXposed 4.6.2 under Android 11/ Magisk 23.0. When I open your apk with the system app installer, Play Protect complains but it is possible to continue with the installation. However, a pop-up error message says that Grindr Plus was not installed. After de-activating Play Protect and trying again, the same pop-up error message appears again.
Should I de-activate and uninstall version 1.0 from EdXposed before installing v1.1?
Hi there! @Jvlc
Yeah, there was a problem when building the app, especifically the signature.
From now you should be able to update the hook without uninstalling the old version and then installing the new one manually. I replaced the releases. I recommend you to uninstall your current version and reinstall the new one manually this time (since I replaced the signature). Hope this won't be an issue!
Thanks!
Btw: This app is not in the Play Store (and obviously won't) so that is what might be triggering the Play Protect alert... Just speculating though. do you guys know how to fix this?
Thanks for the mod, hopeful I get the chance to use it.
Currently am device banned on my main device due to gps changing, do you have any suggested tweaks that can be used with your mod to circumvent that device ban? Thanks.
Laser422 said:
Thanks for the mod, hopeful I get the chance to use it.
Currently am device banned on my main device due to gps changing, do you have any suggested tweaks that can be used with your mod to circumvent that device ban? Thanks.
Click to expand...
Click to collapse
Hi there, @Laser422 !!
From my experience, what I can tell you is not to abuse this feature. Do credible movements and do NOT change the GPS location crazily: that is, you cannot be in France, Japan, Australia, Brazil and USA in less than 30 minutes (this will be a 90-95% probability of ban).
So far, I haven't had problems moving my GPS to nearby locations (around from 0 to 100 km around me). But again, don't teleport: that's not credible. Fake GPS must be used very punctually. Using it continuously even for short distances can also raise suspicions.
In any case, with Grindr Plus you have the 'Explore' mode enabled, with which you can move to any point on the planet without using Fake GPS and therefore not exposing yourself to the risks that its use implies for your Grindr account.
Hope this helps!
ElJaviLuki said:
Hi there! @Jvlc
Yeah, there was a problem when building the app, especifically the signature.
From now you should be able to update the hook without uninstalling the old version and then installing the new one manually. I replaced the releases. I recommend you to uninstall your current version and reinstall the new one manually this time (since I replaced the signature). Hope this won't be an issue!
Thanks!
Btw: This app is not in the Play Store (and obviously won't) so that is what might be triggering the Play Protect alert... Just speculating though. do you guys know how to fix this?
Click to expand...
Click to collapse
I upgraded my phone to Android 12 + Magisk + LSposed, and now your module (version 1.1) works perfectly well!
Jvlc said:
I upgraded my phone to Android 12 + Magisk + LSposed, and now your module (version 1.1) works perfectly well!
Click to expand...
Click to collapse
Happy to hear that!
Laser422 said:
Thanks for the mod, hopeful I get the chance to use it.
Currently am device banned on my main device due to gps changing, do you have any suggested tweaks that can be used with your mod to circumvent that device ban? Thanks.
Click to expand...
Click to collapse
This may be seem random, but are you using XPrivacyLua at all and do you have it activated for Grindr? It works great for privacy, but it doesn't play well with Grindr. I tested it out and when activated for Grindr it instantly threw up the banned screen on Grindr even though I was not actually banned.
Perhaps if that is your case, try disabling it (XPrivacyLua) temporarily and see what happens after that. Grindr does collect quite a large amount of data about it's users but I'm not sure XPrivacyLua prevents that as I didn't test it out for long but I know they track who you view and where from among other things, this is besides the who viewed you part of the app. They post the logs to 'https : //grindr . mobi/v3/logging/mobile/logs' with things such as this (only a small sample)
{
"id": 3600,
"name": "favorites_screen_viewed",
"timestamp": 1657769042553,
"params": {
"version_code": "8.11.0.99373",
"is_background": false
}
}, {
"id": 3601,
"name": "page",
"timestamp": 1657769060567,
"params": {
"version_code": "8.11.0.99373",
"type": "stop",
"page_name": "HomeActivity",
"is_background": false
}
}, {
"id": 3602,
"name": "view_profile_from_favorites",
"timestamp": 1657769060600,
"params": {
"version_code": "8.11.0.99373",
"is_background": false
}
}, {
"id": 3603,
"name": "screenshot_obs_noperm",
"timestamp": 1657769060608,
"params": {
"version_code": "8.11.0.99373",
"is_background": false
}
They track all your activities on there basically...
RobbieTechie said:
This may be seem random, but are you using XPrivacyLua at all and do you have it activated for Grindr? It works great for privacy, but it doesn't play well with Grindr. I tested it out and when activated for Grindr it instantly threw up the banned screen on Grindr even though I was not actually banned.
Perhaps if that is your case, try disabling it (XPrivacyLua) temporarily and see what happens after that. Grindr does collect quite a large amount of data about it's users but I'm not sure XPrivacyLua prevents that as I didn't test it out for long but I know they track who you view and where from among other things, this is besides the who viewed you part of the app. They post the logs to 'https : //grindr . mobi/v3/logging/mobile/logs' with things such as this (only a small sample)
{
"id": 3600,
"name": "favorites_screen_viewed",
"timestamp": 1657769042553,
"params": {
"version_code": "8.11.0.99373",
"is_background": false
}
}, {
"id": 3601,
"name": "page",
"timestamp": 1657769060567,
"params": {
"version_code": "8.11.0.99373",
"type": "stop",
"page_name": "HomeActivity",
"is_background": false
}
}, {
"id": 3602,
"name": "view_profile_from_favorites",
"timestamp": 1657769060600,
"params": {
"version_code": "8.11.0.99373",
"is_background": false
}
}, {
"id": 3603,
"name": "screenshot_obs_noperm",
"timestamp": 1657769060608,
"params": {
"version_code": "8.11.0.99373",
"is_background": false
}
They track all your activities on there basically...
Click to expand...
Click to collapse
Thanks for the response
I don’t have xprivacylua activated. Once dealing with a device ban, for whatever reason, I can’t figure out how to get around it. This mod doesn’t (and wasn’t intended to) aid in that.
Thanks a lot! I don't know if that's what your module is doing or is it just the older app version ( I used 8.6 till it forced me to update) but the incredibly annoying auto opening of keyboard when opening a profile does not happen.
EDIT Auto keyboard happens again for some reason. If it's possible, please make it go away
Also I would like to ask if you could make the dumb ads on top of message list dissapear
Jinnn92 said:
Thanks a lot! I don't know if that's what your module is doing or is it just the older app version ( I used 8.6 till it forced me to update) but the incredibly annoying auto opening of keyboard when opening a profile does not happen.
EDIT Auto keyboard happens again for some reason. If it's possible, please make it go away
Also I would like to ask if you could make the dumb ads on top of message list dissapear
Click to expand...
Click to collapse
As for the ads, look into using Adaway.
first of all thanks for resurrecting this mod ,will you please consider adding some theming option like pure black color and bubble style ?
thanks
.deleted.
onoakino said:
All features are working except the ability to keep the blocker's profile on inbox.
Click to expand...
Click to collapse
I don't think that's ever been a feature of this mod.
daekdroom said:
I don't think that's ever been a feature of this mod.
Click to expand...
Click to collapse
agreed. you're right. thank you for pointing that out. i'm deleting my original question so as not to bring people here from the outside looking for this non-existent feature i thought this mod has.

Categories

Resources