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

2024-04-26 05:28:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难使用Pyjnius访问Android Java类”联系人contract.Intents.Insert". 在

我一直遵循这里提供的这个例子:

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

要访问的Java类:MediaRecorder

但实际上我想用Pyjnius访问的是“联系人contract.Intents.Insert“在Android中获取工作代码,为我的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)

Tags: fromdata联系人javaandroidinsertcontractintents
1条回答
网友
1楼 · 发布于 2024-04-26 05:28:28

在意图。插入是包含静态字符串常量的静态类。当我想从我正在构建的应用程序中添加联系人时,我也遇到了同样的问题。最后,我编写了一个包含静态方法的类,该方法将在java中添加联系人并将其添加到我的buildozer.spec用于编译的文件。我知道这并不完全是你想要的,但它给你一个公平的想法,当遇到这些问题时,有一个解决办法。实际上,将Python代码与Java混合起来相当容易。Kivy非常适合于构建Android应用程序,但是像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脚本

^{pr2}$

最后加上Conact.java公司致buildozer.spec文件

android.add_src = Contact.java

相关问题 更多 >