构建我无法解决的应用程序存在问题,我需要一些帮助。
我有一个简单的类MainActivity.java 这是一个非常基本的应用程序来测试通过FCB接收推送消息。 我现在也在尝试为第三方实施SDK,发送和接收Push through,这是我陷入困境的地方。
这是我班级的代码:
package com.emarsys.tcspushtestapp;
import android.app.Application;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
import com.emarsys.mobileengage.MobileEngage;
import com.emarsys.mobileengage.config.MobileEngageConfig;
import com.google.firebase.iid.FirebaseInstanceId;
public class MainActivity extends AppCompatActivity {
private static final String TAG = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnShowToken = (Button)findViewById(R.id.button_show_token);
btnShowToken.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Get the token
String token = FirebaseInstanceId.getInstance().getToken();
Log.d(TAG, "Token: + " + token);
Toast.makeText(MainActivity.this, token, Toast.LENGTH_SHORT).show();
}
});
MobileEngageConfig config = new MobileEngageConfig.Builder()
.application(this)
.credentials(String, String)
.enableDefaultChannel("MainChannel", "Default Channel")
//.disableDefaultChannel()
.build();
MobileEngage.setup(config);
}
}
这个问题与:
有关.application(this),其中(this)下面有一条红色错误行说明:
构建器中的application(android.app.Application)无法应用于(com.emarsys.tcspushtestapp.MainActivity)
编译错误: 错误:不兼容的类型:MainActivity无法转换为Application
当我将我的类更改为扩展到Application而不是AppCompatActivity时,错误消失,但.onCreate,setContentView和findViewById上出现新错误。
我尝试过的其他事情是: 公共类MainActivity扩展AppCompatActivity实现Application
然后抱怨它期待应用程序的接口。
非常感谢任何帮助!
谢谢。 亲切的问候, MD
答案 0 :(得分:2)
您必须将MainActivity.this替换为新的FlutterEngine(this);
答案 1 :(得分:1)
this
指的是MainActivity。活动属于Context类型。 MobileEngageConfig构建器需要Application类的实例。请改用getApplication();
编辑:您所遵循的教程很可能在自定义Application类中使用了builder方法,因此他们使用了this
。
答案 2 :(得分:0)
Hitesh Sarsava的帖子解决了我的问题。
.application(getApplication())解决了这个问题,所以我会用他的答案作为解决方案。
其他人的帖子也很棒,帮助我更深入地了解这个问题,谢谢大家!
答案 3 :(得分:0)
删除清单文件中的以下代码
meta-data android:name="flutterEmbedding"
android:value="2"
再次运行您的项目,它将正常工作
答案 4 :(得分:0)
尝试使用这个
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
super.configureFlutterEngine(flutterEngine)
GeneratedPluginRegistrant.registerWith(flutterEngine)
}
}