2012-02-13 2 views
2

Android를 처음 사용하기 시작했으며 무료 및 유료 버전이있는 앱을 만들려고합니다. Java에 익숙하지는 않지만 이클립스에서 2 개의 주요 프로젝트 (무료 버전과 유료 버전)로 구성된 간단한 작업 응용 프로그램을 만들 수 있었다.라이브러리 프로젝트가있는 Android 기본 프로젝트 - 프로젝트간에 설정을 전달하는 방법

나는 또한 공유 코드 (활동, 자원, 문자열 등)를 포함하고 기본 프로젝트에서 참조하는 라이브러리 프로젝트를 가지고있다. 내가하고 싶은 일 (그리고 이것은 잘못된 접근 일 수 있습니다)은 무료 또는 유료 버전을 사용하는지 여부에 따라 라이브러리 코드의 내용을 활성화 또는 비활성화합니다.

그래서 예를 들어 나는 도서관 프로젝트의 주요 활동을하고 난 같은 싶지 : 나는 무료 또는 유료를 실행 해요 여부를

if (version == "free") //version would somehow be set by the main project 
{ 
    //disable a paid feature 
} 

는 분명히 어떻게 든 도서관에서 운동을 할 필요를 주요 프로젝트 그래서 내가 필요할 때 기능을 활성화/비활성화 할 수 있습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 예를 들어, 메인 프로젝트에서 어떤 종류의 전역 설정을 사용할 수 있고 라이브러리 프로젝트에서 어떻게 든 이것을 읽을 수 있습니까? 라이브러리 프로젝트가 기본 프로젝트에 대해 알지 못하도록하고 싶습니다.

나는 등, 빠른 연구는 그래서 모든 기사의 방향으로 날 지점 주시기 내가이 문제를 해결하기 위해 관리

답변

2

귀하의 코드가 작동 참조하려면,하지만 난 매니페스트에서 유료/무료 플래그를 저장 확실하지 않다가 최선의 해결책이다 동일한 APK를 사용하여 무료 및 유료 (잠금 해제) 기능을 모두 사용할 수 있습니다. 대신 라이브러리 프로젝트에서 앱이 무료인지 또는 유료인지 여부를 플래그로 설정할 수있는 메소드를 추가하여이 작업을 수행했습니다. 라이브러리 프로젝트에서

예 :

주요 프로젝트에 따라서
if (appPurchased) 
     // show unlocked content 

, 응용 프로그램이 지불 된 경우 :

void setAppPurchasedMode(boolean purchased) 
    { 
     appPurchased = mode; 
    } 

및 라이브러리의

, 당신은이 플래그 대 확인할 수 있습니다

Library.setAppPurchasedMode(true); 
+0

감사합니다. 분명히 매니페스트 파일을 사용하는 것보다 효과적입니다. – vinnyh

1

OK입니다. Application Manifest에서 간단히 android : label 속성을 설정하고 아래 코드를 사용하여이를 참조했습니다. 매니페스트에

: 당신이 경우

android:label="My Free App" 

//Are we using free or pro version? 
if (this.getApplication().getApplicationInfo().loadLabel(this.getPackageManager()).toString().equals("My Free App")) 
{ 
freeVersion = true; 
} else { 
freeVersion = false; 
} 
관련 문제