当前位置: 首页 > 知识库问答 >
问题:

codenameone中的本机接口出错

陆高峰
2023-03-14

我在native/android软件包下添加了paypal android SDK。在主项目结构(com.mycompany.myapp)中创建本机接口。在native/android下,实现的类使用paypal sdk类。我的实现类:

package com.mycompany.myapp;

import com.paypal.android.sdk.payments.PayPalConfiguration;
import com.paypal.android.sdk.payments.PayPalPayment;
import com.paypal.android.sdk.payments.PaymentActivity;
import android.content.Intent;
import android.net.Uri;
import android.app.Activity;
import com.codename1.impl.android.AndroidNativeUtil;
import com.codename1.impl.android.CodenameOneActivity;
import java.math.BigDecimal;

public class MyNativeImpl {
 // private static final String TAG = "paymentdemoblog";
/**
 * - Set to PaymentActivity.ENVIRONMENT_PRODUCTION to move real money.
 * 
 * - Set to PaymentActivity.ENVIRONMENT_SANDBOX to use your test credentials
 * from https://developer.paypal.com
 * 
 * - Set to PayPalConfiguration.ENVIRONMENT_NO_NETWORK to kick the tires
 * without communicating to PayPal's servers.
 */
// private static final String CONFIG_ENVIRONMENT =
// PayPalConfiguration.ENVIRONMENT_NO_NETWORK;
private static final String CONFIG_ENVIRONMENT = PayPalConfiguration.ENVIRONMENT_SANDBOX;

// note that these credentials will differ between live & sandbox
// environments.
private static final String CONFIG_CLIENT_ID = "Aeqc2X1rBIEUtDNqsaRNr0h1neFo9QnNmfgmpA3D32uSLaHpGJu9NV1KfMnFmy7O-_hV47I7ST0SXDW2";

private static final int REQUEST_CODE_PAYMENT = 1;
private static final int REQUEST_CODE_FUTURE_PAYMENT = 2;

private static PayPalConfiguration config = new PayPalConfiguration()
        .environment(CONFIG_ENVIRONMENT)
        .clientId(CONFIG_CLIENT_ID)
        // The following are only used in PayPalFuturePaymentActivity.
        .merchantName("Hipster Store")
        .merchantPrivacyPolicyUri(
                Uri.parse("https://www.example.com/privacy"))
        .merchantUserAgreementUri(
                Uri.parse("https://www.example.com/legal"));

PayPalPayment thingToBuy;
private static Activity activity() {
    return com.codename1.impl.android.AndroidNativeUtil.getActivity();
} 


public String payPalTest() {
 //Activity activity = AndroidNativeUtil.getActivity();      
thingToBuy = new PayPalPayment(new BigDecimal("10"), "USD",
                    "HeadSet", PayPalPayment.PAYMENT_INTENT_SALE);

            Intent intent = new Intent(activity(),PaymentActivity.class);

            intent.putExtra(PaymentActivity.EXTRA_PAYMENT, thingToBuy);
                            activity().startActivityForResult(intent,  REQUEST_CODE_PAYMENT);

    return "test";
}
public boolean isSupported() {
    return false;
}

}

我从主类调用了该方法

        MyNative my = (MyNative)NativeLookup.create(MyNative.class);
        if(my!= null){
          String aa =my.payPalTest();
          System.out.println("result::" + aa);
            System.out.println("paypalInt" + my.toString());
        }

apk构建成功,但在触发代码时出现以下错误:android.content.ActivityNot找到异常:无法找到显式活动类{com.mycompany.myapp/com.paypal.android.sdk.paymentActivity....

它正在主项目文件夹结构下搜索贝宝sdk类。我需要在上述结构下添加SDK jar吗?我需要做什么来解决这个问题。

共有1个答案

窦弘义
2023-03-14

代码看起来很好,我猜这是配置中的东西。无法找到明确的活动类付款活动与PayPalSDK在Xamarin在Android上

 类似资料:
  • 我在CodeNameOne中实现了一些原生android贝宝集成代码。来自CodeNameOne的呼叫: 在本机接口中: 我已经在build_hint下给出了适当的android.xapplication,并在impl类下编写了android代码: 失败:生成失败,出现异常。 有谁能帮忙吗...

  • 在vue项目里调用一个写死地址的接口,调用花费很多时间,使用的是let xmlhttp=new XMLHttpRequest();let url = "http://127.0.0.1:8090" 如果地址使用代理的话很快,但是打包后放到服务器,这个http://127.0.0.1:8090就会变成服务器的地址,而不是当前电脑的地址,所以我只能写死,但是写死又很慢,都不知道怎么解决了

  • 我有问题,点击链接从弹出窗口。单击按钮后,弹出窗口显示约3秒: 我正试图通过单击“取消” 和 但是链接没有被点击。我不知道如何断言工作在这个弹出

  • 在React-Typescript初学者示例“创建组件”的“创建组件”部分中,Typescript中有一个基本的React组件: 我是打字新手。似乎Typescript使用接口道具来执行道具类型检查(类似于Proptypes npm包所做的)。因此,问题是: 如果我已经在使用这种TypeScript接口语法do to props类型检查,我还需要在同一个组件中使用像这样的Proptype包吗?

  • 由于Codename One支持基本Java对象功能的子集,所以在将数据添加到DefaultListModel之前,我不能使用vector.sort()对其进行排序。因此,在Codename One中寻找其他排序选项时,我找到了FilterProxyListModel。 我找不到如何正确初始化FilterProxyListModel的示例,因为它使用了一个有趣但棘手的“代理”设计模式,我对此并不熟