簡體   English   中英

為什么我不能在cordova cusotm插件中調用導入的android平台api類的Java方法

[英]Why can't I call a Java method of an imported android platform api class in cordova cusotm plugin

我正在使用 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);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM