我的解决方案是使用免费应用程序中的简单内容提供程序公开数据,与完整应用程序共享密码以避免安全漏洞。
免费应用程序:AndroidManifest.xml
<provider android:name="MY_PACKAGE.PrefProvider" android:authorities="MY_PACKAGE.prefprovider" />
免费应用程序:PrefProvider.java
public class PrefProvider extends ContentProvider {
public Cursor query(Uri uri, String[] projection, String selection,
String[] selectionArgs, String sortOrder) {
if (! selection.equals(MY_SECRET)) {
return null; //Wrong shared secret
}
MatrixCursor prefs = new MatrixCursor(new String[] {"field1", "field2", "field3"});
MatrixCursor.RowBuilder rb = prefs.newRow();
rb.add(settings.getString("field1", ""));
rb.add(settings.getString("field2", ""));
rb.add(settings.getString("field3", ""));
return prefs;
}
}
付费应用:主要活动
if (isFirstTime) {
// Is the first time that the full version is being launched
Cursor cursor = act.getContentResolver().query(Uri.parse("content://MY_PACKAGE.prefprovider"), null, providerKey, null, null);
if (cursor != null && cursor.moveToFirst() != false) { // non empty cursor, the free app is installed
field1 = cursor.getString(0);
field2 = cursor.getString(1);
field3 = cursor.getString(2);
cursor.close();
}
}