首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何正确掌握当前活动?

如何正确掌握当前活动?
EN

Stack Overflow用户
提问于 2022-04-07 11:09:01
回答 2查看 169关注 0票数 0

我需要访问我的应用程序的当前活动。我查过这个官方代码

如果我使用下面的代码作为文档说明:

代码语言:javascript
复制
PythonActivity = autoclass('org.renpy.android.PythonActivity')

我无法访问活动,它会返回错误。所以在搜索之后我发现了这个:

代码语言:javascript
复制
PythonActivity = autoclass('org.kivy.android.PythonActivity')

下面有两个函数。首先是打开one浏览器,就像在文档和IT WORKS中一样。

代码语言:javascript
复制
from jnius import cast
from jnius import autoclass
PythonActivity = autoclass('org.kivy.android.PythonActivity')
Intent = autoclass('android.content.Intent')
Uri = autoclass('android.net.Uri')
intent = Intent()
intent.setAction(Intent.ACTION_VIEW)
intent.setData(Uri.parse('http://kivy.org'))
currentActivity = cast('android.app.Activity', PythonActivity.mActivity)
currentActivity.startActivity(intent)

现在我需要为我自己的脚本重新编写这个文件。我想给联系人添加新的联系人。我得到了“WRITE_CONTACTS”的许可。在buildozer.spec中:

android.permissions = WRITE_CONTACTS

但是我自己的脚本会返回错误。我的职能:

代码语言:javascript
复制
from jnius import autoclass,cast
PythonActivity=autoclass('org.kivy.android.PythonActivity')
Intent = autoclass('android.content.Intent')
JS=autoclass('java.lang.String')
intent=Intent()
intent.setAction(Intent.ACTION_INSERT)
intent.setType('ContactsContract.RawContacts.CONTENT_TYPE')
intent.putExtra('ContactsContract.Intents.Insert.NAME',JS('Example Name'))
intent.putExtra('ContactsContract.Intents.Insert.PHONE',JS('7777777777'))
currentActivity=cast('android.app.Activity',PythonActivity.mActivity)
currentActivity.startActivity(intent)

日志:

jnius.jnius.JavaException: JVM异常发生:未发现处理意图{ typ=ContactsContract.RawContacts.CONTENT_TYPE (有附加物)} android.content.ActivityNotFoundException的活动

我不知道这是错误的外传,因为我的活动或我的错误类型选择。如果有人能帮我处理这件事我会很高兴的。像这样,媒体上的内容很少。所以我希望像这样的话题能让人们像我一样快速学习。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2022-06-02 01:07:29

最后,我找到了访问活动和获取联系人数据的解决方案。

正确访问PythonActivity

代码语言:javascript
复制
PythonActivity = autoclass("org.kivy.android.PythonActivity")

访问Contacts Java类:

代码语言:javascript
复制
Contacts = autoclass("android.provider.ContactsContract$Contacts")

访问ContactsContract.CommonDataKinds.Phone Java类(相同):

代码语言:javascript
复制
Kinds = autoclass("android.provider.ContactsContract$CommonDataKinds$Phone")

创建getContentResolver()

代码语言:javascript
复制
cr = PythonActivity.mActivity.getContentResolver()

现在我们需要创建2个查询。首先,我们将找到ID,并需要在第二个查询中使用它来找到相等的NUMBER.。还需要查一下是联系人有电话号码吗?也有。在此之后,我们可以循环第二个查询来查找数字:

代码语言:javascript
复制
name_number_dict= {}   # Name:Number  # Change as you wish..
while (que1.moveToNext()):  #Query 1 Loop
    if que1.getString(que1.getColumnIndex(Contacts.HAS_PHONE_NUMBER)):  #If has number
        que2 = cr.query(Kinds.CONTENT_URI, None, Kinds.CONTACT_ID + " = " + que1.getString(que1.getColumnIndex(CONTACTS_ID)), None, None)  #Query 2 Loop
        while (que2.moveToNext()):
            name_number_dict[que1.getString(que1.getColumnIndex(Contacts.DISPLAY_NAME))] = que2.getString(que2.getColumnIndex(Kinds.NUMBER)  # Get datas and put in dic.

如果需要检查查询的所有ColumnNames,请使用query1.getColumnNames() >> 引证

我希望它能帮助你们那些需要在Python>Kivy应用程序中使用这个的人。

票数 0
EN

Stack Overflow用户

发布于 2022-04-07 11:52:48

我不知道Python语法,但我可以告诉您问题所在:

您错过了Intent操作。您需要将Intent中的操作设置为ContactsContract.Intents.Insert.ACTION (它具有字符串值"android.intent.action.INSERT")。

此外,看起来您正在发送Android 常量名称,而不是这些东西的实际字符串值,例如:

你这样做: intent.setType('ContactsContract.RawContacts.CONTENT_TYPE')

它将Intent中的Intent设置为字符串值"ContactsContract.RawContacts.CONTENT_TYPE",您在这里可以看到:

jnius.jnius.JavaException: JVM异常发生:未发现处理意图{ typ=ContactsContract.RawContacts.CONTENT_TYPE (有附加物)} android.content.ActivityNotFoundException的活动

但是type需要设置为Android常量ContactsContract.RawContacts.CONTENT_TYPE,它具有字符串值"vnd.android.cursor.dir/raw_contact"

正如我所说的,我不知道Python语法,但您可能需要这样做:

代码语言:javascript
复制
intent=Intent()
intent.setAction(ContactsContract.Intents.Insert.ACTION)
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE)

或者,如果Python支持它,Intent有一个将动作作为参数的构造函数,所以这也可以:

代码语言:javascript
复制
intent=Intent(ContactsContract.Intents.Insert.ACTION)
intent.setType(ContactsContract.RawContacts.CONTENT_TYPE)

告诉我这一切是否有意义。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71781057

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档