使用Android库项目的付费和免费应用程序 - 如何有效编码?

时间:2014-05-02 04:57:01

标签: android

我计划使用android库项目方法发布我的免费Android应用程序的付费版本。 http://developer.android.com/tools/projects/index.html

我的应用程序有几个独立(非用户界面)类和资源,可以在付费版和免费版之间轻松重复使用。

我的问题是关于管理用户界面逻辑的最佳方法(Activity类中的代码)。让我们说我的免费应用程序有一个按钮,我的付费应用程序在同一个活动中有两个按钮。实现这一目标的最佳方法是进行以下设置吗?

Android库项目

1)一键式布局
2)Ativity.java文件,包含单击按钮时的逻辑

免费应用

使用库项目的布局和源代码

付费应用

1)带有两个按钮的布局文件 2) new Activity.java,它具有完全相同的代码,用于处理button1点击和处理button2点击的新代码。

这似乎不对,因为按钮1在付费应用中的逻辑似乎是一个浪费的副本......有更好的方法吗?

1 个答案:

答案 0 :(得分:1)

您可以创建具有所有功能的单个项目库

只需要一种方法,可以识别应用程序是付费还是免费

为此,请按照步骤

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类,并从库类中设置main和launcher活动

<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 app的应用程序类以及库项目中的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();
        }

如果您仍然发现任何问题,请告诉我.....