gpt4 book ai didi

java - 如何使用 Pyjnius 正确访问 Android java 类

转载 作者:行者123 更新时间:2023-11-30 08:08:40 27 4
gpt4 key购买 nike

我在尝试使用 Pyjnius 访问 Android Java 类“ContactsContract.Intents.Insert”时遇到了困难。

我一直在关注此处提供的示例:

皮尼乌斯:http://kivy.org/planet/2012/08/pyjnius-accessing-java-classes-from-python/

要访问的Java类:MediaRecorder

但我真正想要使用 Pyjnius 访问的是 Android 中的“ContactsContract.Intents.Insert”,并获取工作代码以将新联系人添加到我的 Android 手机。

Android 类:https://developer.android.com/reference/android/provider/ContactsContract.Intents.Insert.html

这是我到目前为止所拥有的,但我对数组列表感到困惑:

from jnius import autoclass

Data = autoclass("ArrayList")
data = Data()

MyContacts = autoclass("ContactsContract.Intents.Insert")

mycontacts = MyContacts()
data.put(Data.MIMETYPE, Organization.CONTENT_ITEM_TYPE)
data.put(Organization.COMPANY, "Android")
data.add(mycontacts)

最佳答案

Intents.Insert 是一个静态类,其中包含静态字符串常量。当我想从我正在构建的应用程序添加联系人时,我遇到了同样的问题。我最终编写了一个包含静态方法的类,该方法将在 java 中添加联系人并将其添加到我的 buildozer.spec 文件中进行编译。我知道这并不完全是您所追求的,但它可以让您在遇到此类问题时有一个合理的想法,有解决办法。实际上,将 Python 代码与 Java 混合起来相当容易。 Kivy 非常适合构建 Android 应用程序原型(prototype),但与 pyjnius 一样,文档非常有限。

Java代码

import android.provider.ContactsContract.Contacts;
import android.provider.ContactsContract.Intents;
import android.app.Activity;
import android.content.Intent;

public class Contact{

public static void addContact(Activity pyActivity, String name, String phone, String email){
Intent i = new Intent(Intent.ACTION_INSERT);
i.setType(Contacts.CONTENT_TYPE);
i.putExtra(Intents.Insert.NAME, name);
i.putExtra(Intents.Insert.PHONE, phone);
i.putExtra(Intents.Insert.EMAIL, email);
pyActivity.startActivity(i);
}

}

Python脚本

PythonActivity = autoclass("org.kivy.android.PythonActivity")
Contact = autoclass("Contact")
Contact.addContact(PythonActivity.mActivity, "Steve", "666", "steve666@gmail.com")

最后将Conact.java添加到buildozer.spec文件

android.add_src = Contact.java

关于java - 如何使用 Pyjnius 正确访问 Android java 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30719424/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com