我正在尝试在 Flutter 项目中创建一个平台通道来访问特定于 Android 的 java 代码。我正在 Android Studio 中创建一个新的 Flutter 应用程序项目,并遵循本教程,其中提到:
1- 导航到 Flutter 应用所在的目录,然后选择其中的 android 文件夹。单击确定。
2- 打开位于项目视图中 java 文件夹中的 MainActivity.java 文件。
但是,该项目仅包含 MainActivity.kt 而不是 Java:
我尝试使用上下文菜单>新建>活动在java文件夹中手动创建一个新活动,但它不起作用。
编辑:
对此的最佳解决方案(如果您可以创建新项目)是在设置项目时取消选中“Include Kotlin support for Android code”。这会自动创建 MainActivity.java。Objective-C 和 Swift 也是如此。如果您想使用 Objective-C,请取消选中“Include Swift support for iOS code”
java android android-studio flutter flutter-platform-channel
我XMPPFramework在 Swift 中使用库,它使用 Core Data 提供消息历史存储。我正在尝试使用以下函数从存储中请求存档消息:
func getChatHistory() {
guard let context = xmppMessageStorage.mainThreadManagedObjectContext else {return}
var entityDescription = NSEntityDescription.entity(forEntityName: "XMPPMessageArchiving_Message_CoreDataObject", in: context)
var request = NSFetchRequest<NSFetchRequestResult>(entityName: "XMPPMessageArchiving_Message_CoreDataObject")
request.entity = entityDescription
do {
var messages = try request.execute()
print("Archived Messages: \n\(messages)")
} catch let error {
print("Error fetching chat history: \(error)")
}
}
Run Code Online (Sandbox Code Playgroud)
但是,当我执行该函数时,我收到以下错误:
错误域=NSCocoaErrorDomain 代码=134060 “发生核心数据错误。” UserInfo={message=不能在范围内没有 NSManagedObjectContext 的情况下获取}
我无法理解为什么会发生这种情况,因为我在代码中正确设置了上下文。如果有人能帮助我理解这里出了什么问题,我将不胜感激。