Android:LabeledIntent,如何将其与Android 1.6(API级别4)一起使用,以将其包含在createChooser函数中?

Android:LabeledIntent,如何将其与Android 1.6(API级别4)一起使用,以将其包含在createChooser函数中?,android,android-widget,Android,Android Widget,我正在为Android 1.6编程,以下代码在2.2(API级别5)中工作: 我不知道包裹是否可以包含另一种类型的数据(不是LabeledIntent)。这将是一个可能的解决办法 我试图将LabeledIntent的代码包括在我的项目中,我发现: 但是没有成功。这将是另一个问题,如何在旧的Android版本中包含更高版本的类 有什么想法吗?据我所知,您也可以指定常规的意图类,您是否尝试过,或者是否需要自定义标签?用户Commonware为我提供了解决方案: 解决方案是创建一个代理类,以便确定

我正在为Android 1.6编程,以下代码在2.2(API级别5)中工作:

我不知道包裹是否可以包含另一种类型的数据(不是LabeledIntent)。这将是一个可能的解决办法

我试图将LabeledIntent的代码包括在我的项目中,我发现:

但是没有成功。这将是另一个问题,如何在旧的Android版本中包含更高版本的类


有什么想法吗?

据我所知,您也可以指定常规的意图类,您是否尝试过,或者是否需要自定义标签?

用户Commonware为我提供了解决方案:

解决方案是创建一个代理类,以便确定sdk是否低于级别5,我实例化了一个不包含LabeledIntent类的类,该类仅从2.0开始提供

必须记住的一件事是,您不能引用任何包含来自更现代sdk的包/类引用的类。因此,事实上,如果sdk小于5,那么对于下面的代码,我从未引用过引用LabeledIntent的类(LabeledIntentNew)

这就是代码:

public abstract class LabeledIntentBridge {
    public abstract Intent BuildLabeledIntent(String URL, Intent intent, Activity activity);

    public static final LabeledIntentBridge INSTANCE=buildBridge();

    private static LabeledIntentBridge buildBridge() {
        int sdk=new Integer(Build.VERSION.SDK).intValue();

        if (sdk<5) {
            return(new LabeledIntentOld());
        }
        return(new LabeledIntentNew());         

    }
}
public abstract class LabeledIntentBridge {
    public abstract Intent BuildLabeledIntent(String URL, Intent intent, Activity activity);

    public static final LabeledIntentBridge INSTANCE=buildBridge();

    private static LabeledIntentBridge buildBridge() {
        int sdk=new Integer(Build.VERSION.SDK).intValue();

        if (sdk<5) {
            return(new LabeledIntentOld());
        }
        return(new LabeledIntentNew());         

    }
}
activity.startActivity(LabeledIntentBridge.INSTANCE.BuildLabeledIntent(
                            URL,
                                    theIntent,
                                                       activity     
                    )   
);