Search code examples
javaandroidgoogle-playcodenameoneprivacy

CN1 - App excluded from Google Play Store


One of my older applications (> 2 yrs.) has been excluded from the Google Play Store due to violating the privacy. I am allegedly uploading users' phone numbers.

(...) your app is uploading users' Phone number information
to https://cloud.codenameone.com without disclosing it in the 
privacy policy in Play Console and without posting a privacy 
policy in Play Distributed App.

Fact is I am not uploading anything to anyplace, at least not knowingly. The app doesn't even have ads.

Any idea what's going on and how to get around it? The app was generated on Eclipse (Arch Linux) and doesn't use Maven.

This is the code from the Main Class :

package com.torus.A1;

import static com.codename1.ui.CN.addNetworkErrorListener;   
import static com.codename1.ui.CN.getCurrentForm; 
import static com.codename1.ui.CN.updateNetworkThreadCount;
import java.io.IOException;
import com.codename1.io.Log; 
import com.codename1.ui.Dialog; 
import com.codename1.ui.Form; 
import com.codename1.ui.Toolbar; 
import com.codename1.ui.plaf.UIManager; 
import com.codename1.ui.util.Resources;

 public class A1Main {

private Form current;
private Resources theme;
private ClassPojos classPojos = new ClassPojos();


public void init(Object context) {
 
    updateNetworkThreadCount(2);

    theme = UIManager.initFirstTheme("/theme");                 
    CSSUtilities.loadMultipleCSSes("theme");

    Toolbar.setGlobalToolbar(true);

    Log.bindCrashProtection(true);

    addNetworkErrorListener(err -> {
        // prevent the event from propagating
        err.consume();
        if(err.getError() != null) {
            Log.e(err.getError());
        }
        Log.sendLogAsync();
        Dialog.show("Connection Error", "There was a networking error in the 
         connection to " + err.getConnectionRequest().getUrl(),
        "OK", null);
    });        
}

public void start() {
    if(current != null){
        current.show();
        return;
        
    }

    try {
          new ClassStartScreen().startScreen(classPojos, new ClassPojos2());      
    } catch (IOException e) {
           e.printStackTrace();
  }

}

public void stop() {
    current = getCurrentForm();
    if(current instanceof Dialog) {
        ((Dialog)current).dispose();
        current = getCurrentForm();
    }
}

public void destroy() {
}

}

Solution

  • We went through that too, see this. The TL;DR this might not be a problem in the current version of the app and might be a bug in a version that's in the alpha or beta channel.

    If you build a new version and upload it this should be resolved. But it won't if you ever had an app in alpha or beta (even if you closed the alpha/beta). So you might need to publish in the applicable channel and promote your app to production.

    To be clear: we obviously don't upload phone details, we needed access to a global permission (which included phone details) to do some basic things. There was no other workaround back in the day.