Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/378.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Pyjnius正确访问androidjava类_Java_Python_Pyjnius - Fatal编程技术网

如何使用Pyjnius正确访问androidjava类

如何使用Pyjnius正确访问androidjava类,java,python,pyjnius,Java,Python,Pyjnius,我很难使用Pyjnius访问Android Java类“ContactsContract.Intents.Insert” 我一直遵循此处提供的示例: 比约尼斯: 要访问的Java类:MediaRecorder 但我真正想使用Pyjnius访问的是Android中的“contacts contract.Intents.Insert”,并获取工作代码,将新联系人添加到我的Android手机中 Android类: 这是我到目前为止得到的,但我对arraylist感到困惑: from jnius imp

我很难使用Pyjnius访问Android Java类“ContactsContract.Intents.Insert”

我一直遵循此处提供的示例:

比约尼斯:

要访问的Java类:MediaRecorder

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

Android类:

这是我到目前为止得到的,但我对arraylist感到困惑:

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)

Insert是一个包含静态字符串常量的静态类。当我想从我正在构建的应用程序中添加联系人时,我也遇到了同样的问题。最后,我编写了一个包含静态方法的类,该方法将在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脚本

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代码放在哪里了?我正在尝试做类似的事情。