Skip to content

Privacy and Permissions Statement

Permission Configuration Statement

Name Required Reason for Use
READ_PHONE_STATE No Used to obtain the cellular network device information of the phone

For details on how to request dynamic permissions, refer to Android Developer

Adapting to Market Privacy Audits

Privacy Statement

View Here

Method 1: SDK AndroidID Configuration

The SDK uses Android ID to better correlate data from the same user. If you need to publish the app on an application market, it is recommended to enable it only after the user agrees to the privacy policy.

public class DemoApplication extends Application {
    @Override
    public void onCreate() {
        // Set setEnableAccessAndroidID to false during initial configuration
        FTSDKConfig config = new FTSDKConfig.Builder(DATAKIT_URL)
                .setEnableAccessAndroidID(false)
                .build();
        FTSdk.install(config);

        // ...
    }
}

// Enable after the user agrees to the privacy policy
FTSdk.setEnableAccessAndroidID(true);
class DemoApplication : Application() {
    override fun onCreate() {
        // Set setEnableAccessAndroidID to false during initial configuration
        val config = FTSDKConfig
            .builder(DATAKIT_URL)
            .setEnableAccessAndroidID(false)

        FTSdk.install(config)

        // ...
    }
}

// Enable after the user agrees to the privacy policy
FTSdk.setEnableAccessAndroidID(true)

Method 2: Delayed SDK Initialization

If you need to delay loading the SDK within the app, it is recommended to complete the initialization only after the user agrees to the policy.

// Application
public class DemoApplication extends Application {
    @Override
    public void onCreate() {
        // If the policy has been agreed to, initialize in the Application
        if (agreeProtocol) {
            FTSdk.init(); // SDK initialization pseudo-code
        }
    }
}

// Privacy Statement Activity page
public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // Privacy statement not read
        if (notReadProtocol) {
            // Show privacy statement popup
            showProtocolView();

            // If the privacy statement is agreed to
            if (agreeProtocol) {
                FTSdk.init(); // SDK initialization pseudo-code
            }
        }
    }
}
// Application
class DemoApplication : Application() {
    override fun onCreate() {
        // If the policy has been agreed to, initialize in the Application
        if (agreeProtocol) {
            FTSdk.init() // SDK initialization pseudo-code
        }
    }
}

// Privacy Statement Activity page
class MainActivity : Activity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        // Privacy statement not read
        if (notReadProtocol) {
            // Show privacy statement popup
            showProtocolView()

            // If the privacy statement is agreed to
            if (agreeProtocol) {
                FTSdk.init() // SDK initialization pseudo-code
            }
        }
    }
}

Third-party Frameworks

flutter, react-native, uni-app, unity can adopt a delayed initialization approach similar to native Android to handle application market privacy audits.