我很难使用Pyjnius来访问Android类"ContactsContract.Intents.Insert“。
我一直以以下例子为例:
Pyjnius:http://kivy.org/planet/2012/08/pyjnius-accessing-java-classes-from-python/
要访问的Java : MediaRecorder
但是,我真正想要使用Pyjnius访问的是安卓中的"ContactsContract.Intents.Insert“,它可以在我的安卓手机上添加一个新的联系人。
安卓类: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)发布于 2018-10-06 12:09:55
Intents.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.javahttps://stackoverflow.com/questions/30719424
复制相似问题