2012-02-13 6 views
2

Androidで遊ぶようになったばかりで、無料版と有料版のアプリを作成しようとしています。私はJavaにも新しいですが、私はEclipseで簡単な作業用アプリケーションを作成することができました。これは2つの主要なプロジェクトから成り立っています(1つは無料版用、もう1つは有料版用です)。Androidプロジェクトとライブラリプロジェクト - プロジェクト間での設定の受け渡し方法

私はまた、共有コード(アクティビティ、リソース、文字列など)を含み、メインプロジェクトによって参照されるライブラリプロジェクトを持っています。私がしたいこと(そしてこれは間違ったアプローチかもしれません)は、私がフリー版か有料版かに応じてライブラリのコードを有効または無効にします。

だから例えば私は、ライブラリプロジェクトでの主な活動を持っているし、私のような何かをしたい:私は、無料または有料を実行しているかどうかを

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

はもちろん、私は何とかライブラリでワークアウトする必要がありますがメインプロジェクトでは、必要なときに機能を有効/無効にすることができます。これを行うための最良の方法は何ですか?例えば、私はメインプロジェクトで何らかのグローバル設定を使用することができ、何とかこれを図書館プロジェクトで読むことができますか?図書館プロジェクトがメインプロジェクトについて知りたいと思っていませんか?

私は、迅速な研究だので、私はこの問題を解決するために管理

答えて

2

あなたのコードが動作する参照するために、私はあなたのマニフェストで有料/無料のフラグを保存するかわからないが最善の解決策です同じapkを使用して、無料と有料(アンロック)の両方の機能を持つことができます。代わりに、ライブラリプロジェクトにメソッドを追加することでこれを行います。これにより、プロジェクトが無料か有料かのフラグを設定できます。図書館プロジェクトで

例:

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

とあなたのライブラリーでは、このフラグ対チェックすることができます。

if (appPurchased) 
     // show unlocked content 

だからあなたのメインプロジェクトでは、アプリがために支払われている場合:

Library.setAppPurchasedMode(true); 
+0

ありがとうございます - マニフェストファイルを使用するよりもはるかに優れています – vinnyh

1

OK等、任意の記事の方向に私を指すこと自由に感じ。アプリケーションマニフェストでは、単に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; 
} 
関連する問題