科尔多瓦应用程序 - 多个应用程序Android:名称
问题描述:
我试图使用两个科尔多瓦插件,当然都需要安装应用程序Android:名称。科尔多瓦应用程序 - 多个应用程序Android:名称
插件: https://github.com/CleverTap/clevertap-cordova和 https://github.com/taivo/parse-push-plugin
按照其他类似的帖子中,我创建了一个MainApplication文件,并试图将两个插件扩展到新的公共类。我是业余爱好者,所以我确信自己做错了什么,因为我在尝试构建时收到以下错误消息。
MainApplication.java:8: error: class CleverTapPlugin is public, should be declared in a file named CleverTapPlugin.java
public class CleverTapPlugin extends Application {
MainApplication.java:12: error: class ParsePushApplication is public, should be declared in a file named ParsePushApplication.java
public class ParsePushApplication extends CleverTapPlugin {
MainApplication.java:4: error: ParsePushApplication is already defined in this compilation unit
import github.taivo.parsepushplugin.ParsePushApplication;
MainApplication.java:5: error: CleverTapPlugin is already defined in this compilation unit
import com.clevertap.cordova.CleverTapPlugin;
这里是我的MainActivity文件:
package com.example.app;
import android.app.Application;
import github.taivo.parsepushplugin.ParsePushApplication;
import com.clevertap.cordova.CleverTapPlugin;
public class CleverTapPlugin extends Application {
}
public class ParsePushApplication extends CleverTapPlugin {
}
public class MainApplication extends ParsePushApplication {
}
看来我的MainActivity被正确调用的构建,因为我得到这些错误信息,但我敢肯定,我做错了什么。有任何想法吗?
答
根据CleverTap Android文档,如果您使用的是您自己的应用程序类,则可以在您的课程中您的super.onCreate()
之前拨打ActivityLifecycleCallback.register(this);
。
此外,如果你想使用自己的活动周期监听器,请更新它包含以下代码:
application.registerActivityLifecycleCallbacks(
new android.app.Application.ActivityLifecycleCallbacks() {
@Override
public void onActivityCreated(Activity activity, Bundle bundle) {
CleverTapAPI.setAppForeground(true);
try {
CleverTapAPI.getInstance(application).event.pushNotificationEvent(activity.getIntent().getExtras());
} catch (Throwable t) {
// Ignore
}
try {
Intent intent = activity.getIntent();
Uri data = intent.getData();
CleverTapAPI.getInstance(application).pushDeepLink(data);
} catch (Throwable t) {
// Ignore
}
}
@Override
public void onActivityStarted(Activity activity) {
}
@Override
public void onActivityResumed(Activity activity) {
try {
CleverTapAPI.getInstance(application).activityResumed(activity);
} catch (Throwable t) {
// Ignore
}
}
@Override
public void onActivityPaused(Activity activity) {
try {
CleverTapAPI.getInstance(application).activityPaused(activity);
} catch (Throwable t) {
// Ignore
}
}
@Override
public void onActivityStopped(Activity activity) {
}
@Override
public void onActivitySaveInstanceState(Activity activity, Bundle bundle) {
}
@Override
public void onActivityDestroyed(Activity activity) {
}
}
);
欲了解更多信息,你可以检查出以下链接 -
为什么要扩展该插件?我的意思是,你只需要添加该插件并在你的html中使用它。 –
@JorgeManuelBello是的,通常情况下这对插件来说是正确的,但是这两个插件似乎都会导致本机崩溃,或者如果它们没有添加到应用程序android:name中,它们就不会正确跟踪活动,所以我需要扩展它们以使两个工作正常。 –
好吧,错误说你需要在不同的文件中声明每个类,无论如何,插件扩展了cordova类并实现了特殊的方法。所以,如果你打算扩展这些类,我的猜测是你需要扩展这个类并实现这些方法,并再次将这些新文件添加到该插件xml –