![](/img/trans.png)
[英]On Android, how to use code to distinguish free app vs paid app using the same library
[英]Paid and Free App using Android Library Project - How to code effectively?
我打算使用android庫項目方法發布免費的android應用程序的付費版本。 http://developer.android.com/tools/projects/index.html
我的應用程序具有幾個獨立的(非用戶界面)類和資源,可輕松在付費版本和免費版本之間重用。
我的問題是有關管理用戶界面邏輯(Activity類中的代碼)的最佳方法。 假設我的免費應用程序有一個按鈕,而付費應用程序在同一活動中有兩個按鈕。 實現此目的的最佳方法是進行以下設置?
1)一鍵式布局
2)一個Ativity.java文件,其中包含單擊按鈕時的邏輯
使用庫項目中的布局和源代碼
1)一個帶有兩個按鈕的新布局文件
2)一個新的 Activity.java,它具有完全相同的用於處理button1單擊的代碼和用於處理button2單擊的新代碼。
這似乎不對,因為在付費應用程序中button1的邏輯似乎是浪費的副本……是否有更好的方法來做到這一點?
您可以使用所有功能創建一個項目庫
您只需要一種可以確定應用程序是付費還是免費的方法
為此,請按照以下步驟操作
1)假設testFree創建一個新的應用程序
2)在庫項目中創建一個新的應用程序類,如下所示
package com.example.testlib;
import android.app.Application;
public class App extends Application{
private static App mInstance;
public App() {
mInstance = this;
}
public static App getInstance() {
return mInstance;
}
public boolean isFree()
{
return true;
}
}
3)假設testPaid創建一個新的應用程序
4)在testPaid應用程序中創建一個新的Application類,如下所示
package com.example.testpaid;
import com.example.testlib.App;
public class AppPaid extends App {
@Override
public boolean isFree() {
// TODO Auto-generated method stub
return false;
}
}
5)將testFree應用程序上的應用程序名稱設置為我們在庫類上創建的應用程序類,並從庫類中設置主程序和啟動器活動
<application
android:name="com.example.testlib.App"
....
<activity
android:name="com.example.testlib.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
6)現在設置應用程序名稱以創建testPaid應用程序的應用程序類,以及庫項目中的main和launcher活動,如下所示
<application
android:name="com.example.testpaid.AppPaid"
....
<activity
android:name="com.example.testlib.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
7)您現在在任何類別的圖書館項目中所設置的所有內容,都有一種方法可以檢查您的應用程序是免費還是付費的,您可以按照以下方式進行檢查,並在此基礎上可以使付費應用程序看到某些付費功能,而某些則免費釋放
if(App.getInstance().isFree())
{
Toast.makeText(getActivity(), "Free App", Toast.LENGTH_SHORT).show();
}
else
{
Toast.makeText(getActivity(), "Paid App", Toast.LENGTH_SHORT).show();
}
讓我知道您是否仍然有任何問題.....
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.