付费和免费应用程序使用安卓图书馆项目-如何有效编码



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

我的应用程序有几个独立的(非用户界面(类和资源,在付费和免费版本之间很容易重用。

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

Android库项目

1( 带有一个按钮的布局
2( Ativity.java文件,包含单击按钮时的逻辑

免费应用程序

使用图书馆项目的布局和源代码

付费应用程序

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

这似乎是不对的,因为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( 创建一个新的应用程序假设testPayed

4( 在testPayed应用程序中创建一个新的应用程序类作为Follow

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应用程序上的应用程序名称设置为我们在库类上创建的应用程序类,并从库类中设置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( 现在设置应用程序名称以创建testPayed应用程序的应用程序类,以及库项目中的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();
        }

如果你还发现任何问题,请告诉我。。。。。

最新更新