How-to: Content Provider
From version 4.1.0 on, the mySync client for Android includes a Content Provider which other apps can use to read some information about the user or the client. This page documents this feature. See developer.android.com for information about Content Providers.
Profile information
Since: Client version 5.6; Server version 19.10
Content URI: content://{application ID}.provider/profile
(for example: content://eu.mysync.android.dm.provider/profile
)
Access to this data in protected. Calling package name must be listed in the ContentProviderPolicy of the device profile. Optionally also the package's signature fingerprint can be checked.
This content URI will provide a single row of information if the client has been provisioned. If access is denied, an unchecked exception is thrown. The client downloads updates to the data during scheduled connections.
Provider columns
Column name | Type | Description |
---|---|---|
deviceCn | String | Device's Common Name. This is the name visible in mySync user interfaces. |
deviceId | String | Device's UUID. |
orgCode | String | Organisation code |
deviceMsisdn | String | Device's phone number as known by the server. |
deviceDescription | String | Device profile's description as set on server. |
User information
Content URI: content://{application ID}.provider/user
(for example: content://eu.mysync.android.dm.provider/user
)
The content URI contains the application ID which is different for different client variations.
This content URI will provide a single row of information if the client has been provisioned. Otherwise it will be empty.
Provider columns
Column name | Type | Description |
---|---|---|
| String | User account ID |
| String | User device ID. This is the name visible in mySync user interfaces, also known as CN or Common Name. |
| String | Organisation code |
| String | Server URL |
| Long | Timestamp (in milliseconds) of last successful server connection |
Example code
Example code
Context context = this;
ContentResolver cr = context.getContentResolver();
Uri uri = Uri.parse("content://eu.mysync.android.dm.provider/user");
String[] projection = {"accountId", "deviceId", "orgCode", "serverUrl", "lastConnection"};
Cursor cursor = cr.query(uri, projection, null, null, null);
String msg;
if (cursor != null) {
if (cursor.moveToFirst()) {
String accountId = cursor.getString(0);
String deviceId = cursor.getString(1);
String orgCode = cursor.getString(2);
String serverUrl = cursor.getString(3);
long lastConnection = cursor.getLong(4);
msg = "mySync is provisioned. accountId: " + accountId + " deviceId: " + deviceId + " orgCode: " + orgCode + " server: " + serverUrl + " lastConnection: " + lastConnection;
} else {
msg = "mySync is not provisioned (no user information provided)";
}
cursor.close();
} else {
msg = "mySync is not installed, mySync version does not support URI, or URI is wrong.";
}
Toast.makeText(context, msg, Toast.LENGTH_LONG).show();