java - 为什么我不能在cordova cusotm插件中调用导入的android平台api类的Java方法
问题描述
我正在使用 Ionic 创建一个应用程序,为了加载与 Play Asset Delivery 一起使用的资产,我需要通过创建一个 cordova 插件来访问 android 本机代码。我需要添加那三行代码。为了实现这一点,我导入了包含这些方法和类的 Android 平台 API。
插件 Java 文件:
package cordova.plugin.hello;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.CallbackContext;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
//My Imports
import android.content.res.AssetManager;
import android.content.Context;
import java.io.InputStream;
public class hello extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
Context context = createPackageContext("io.ionic.starter", 0);
AssetManager assetManager = context.getAssets();
InputStream is = assetManager.open("pack1");
}
}
构建应用程序时出现此错误:
> Task :app:compileDebugJavaWithJavac FAILED
C:\Users\LUM\appAsset\platforms\android\app\src\main\java\cordova\plugin\hello\hello\hello.java:22: error: cannot find symbol
Context context = createPackageContext("io.ionic.starter", 0);
^
symbol: method createPackageContext(String,int)
location: class hello
Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
1 error
我对应用程序开发非常陌生,我在 Internet 上找到的所有可能的解决方案都会产生不同的错误,并且在远离您可以在第一篇链接文章中看到的三行代码的同时。例如添加this.cordova.getActivity()
并调用createPackageContext("io.ionic.starter", 0);
它。这造成了更多的错误。与其他修复尝试相同。
我知道即使在修复其他错误之后出现错误也是正常的,但如果你能帮助我解决我在代码中根本做错的事情,那真的会帮助我。
Android SDK Tools : 26.1.1
NodeJS : v12.18.3
npm : 6.14.6
OS : Windows 10
Gradle : 6.6.1
Ionic Framework : @ionic/angular 5.3.3
Cordova Platforms : android 9.0.0
解决方案
@Stultuske是对的 -createPackageContext()
是类的实例方法,android.content.Context
因此您需要在现有的类实例上调用它。您可以使用应用程序上下文实例;尝试这个:
Context context = this.cordova
.getActivity()
.getApplicationContext()
.createPackageContext("io.ionic.starter", 0);
推荐阅读
- python - Python tkinter 按钮事件
- html - 使用纯 css 的位置图标动画
- java - 如何获取歌曲的封面图片?
- python - 如何将此顺序模型更改为功能模型?
- maven - 使用 JDK 10 / JDK 11 和 maven pugin 进行 Proguard
- php - 带有用户输入值的复选框
- json - JSON:Spring Boot 条件验证
- amazon-web-services - 是否可以从订阅中提取 Cloudwatch 日志的内容
- java - 由 defaultValue 引起的将 int 从一个活动传递到另一个活动的问题
- selenium - .net 3.5 视觉工作室的硒