2010-06-01 4 views
2

현재 유료 앱을 판매하고 있습니다. 이제 사용자가 먼저 시도 할 수있는 무료 앱을 제공하려고합니다. 또한 무료 앱 사용자가 만든 유료 데이터가 유료 앱으로 업그레이드 된 후에 표시되는지 확인하고 싶습니다.Android 무료 공유 앱을 sharedUserId를 사용하여 유료 앱으로 업그레이드

Android 문서를 살펴본 결과 Manifest의 sharedUserId를 사용하면 효과가있는 것 같습니다.

내가 발견 한 문제는 sharedUserId를 버전 2의 유료 앱의 매니페스트에 넣으면 이전 버전 (버전 1)이 작동하지 않는다는 것입니다. 데이터가 더 이상 새 앱에 표시되지 않기 때문입니다. sharedUserId. 버전 1에서는 sharedUserId를 구현하지 않았습니다.

그럼 구현할 수있는 다른 해결책이 있는지 궁금합니다. a) 유료 앱의 이전 버전 (sharedUserId없이)이 새 버전 (sharedUserId 포함)과 함께 계속 작동 할 수 있습니다.

b) 무료 버전에서 유료 버전으로의 업그레이드 경로에는 남은 데이터가 포함됩니다.

누구나? 누군가가 비슷한 상황에 처했을 때 해결책을 찾은 것 같습니다.

답변

-1

내 솔루션은 무료 앱에 간단한 Content Provider을 사용하여 데이터를 노출하여 보안 허점을 피하기 위해 전체 앱과 비밀번호를 공유하는 것입니다.

무료 앱 : 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(); 
     } 
    } 
+0

리튬 nk를 입력하면 404가 표시됩니다. 직접 관련 정보를 추가하십시오. –