【问题标题】:How to properly access an Android java class using Pyjnius如何使用 Pyjnius 正确访问 Android java 类
【发布时间】:2015-08-23 12:37:50
【问题描述】:

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

我一直在关注这里提供的这个例子:

Pyjnius: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)

【问题讨论】:

    标签: java python pyjnius


    【解决方案1】:

    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.java
    

    【讨论】:

    • 你把java代码具体放在哪里了?我正在尝试做类似的事情。
    猜你喜欢
    • 2021-04-06
    • 2020-09-21
    • 2013-04-15
    • 2017-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-13
    • 1970-01-01
    相关资源
    最近更新 更多