【问题标题】:Paid and Free App using Android Library Project - How to code effectively?使用 Android 库项目的付费和免费应用程序 - 如何有效编码?
【发布时间】:2014-05-02 13:59:34
【问题描述】:

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

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

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

Android 库项目

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

免费应用

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

付费应用

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

这似乎不对,因为付费应用中 button1 的逻辑似乎是一个浪费的副本......有没有更好的方法来做到这一点?

【问题讨论】:

  • 对于付费应用,如果差异足够小,我认为你可以扩展免费应用的Activity,并添加另一个代码来处理button2,这样免费应用的每一次变化也会反映到付费应用。
  • 感谢您的评论安德鲁。实际上,代码比我上面给出的示例更复杂。那么如果付费和免费应用程序之间的差异很大,我上面提到的方法是你会做的吗?

标签: android


【解决方案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 中创建一个新的Application 类作为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 和启动器活动

<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 和启动器活动,如下所示

 <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();
        }

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

【讨论】:

  • 疯狂的编码员。回复晚了非常抱歉。我很困惑这种方法和应用内计费方法。我不确定我的付费版本应该走哪条路。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多