首页 > 编程语言 >QPython实例02-调用其他app实例

QPython实例02-调用其他app实例

时间:2023-02-01 23:22:34浏览次数:50  
标签:QPython 02 droid SETTINGS ACTION 实例 intent action android

一、前言


使用版本:QPython 3c

下载地址:百度搜索QPython 3C开源版即可下载

或关注【产品经理不是经理】gzh,回复【qpython 3c】即可获取下载链接。

二、代码实例


注意

# 执行以下方法前,请加上以下代码
from androidhelper import Android
droid=Android()

打开qq群

def jumpQQTeam(qqTeam):
    action="android.intent.action.VIEW"
    uri=f"mqqapi://card/show_pslcard?src_type=internal&version=1&uin={qqTeam}&card_type=group&source=qrcode"
    intent=droid.makeIntent(action=action, uri=uri)
    droid.startActivityIntent(intent.result)
    

打开qq


def jumpQQ(qq):
    action="android.intent.action.VIEW"
    uri=f"mqqapi://card/show_pslcard?src_type=internal&source=sharecard&version=1&uin={qq}"
    intent=droid.makeIntent(action=action, uri=uri)
    droid.startActivityIntent(intent.result)

分享纯文本到QQ

def shareQQ(content):
    action="android.intent.action.SEND"
    mime="text/plain"
    extras={
        "android.intent.extra.SUBJECT":"share",
        "android.intent.extra.TEXT":content
    }
    flags=FLAG_ACTIVITY_NEW_TASK
    packageName="com.tencent.mobileqq"
    className="com.tencent.mobileqq.activity.JumpActivity"
    intent=droid.makeIntent(action=action,type=mime,extras=extras,flags=flags,packagename=packageName,classname=className)
    droid.startActivityIntent(intent.result)

打开浏览器搜索

def search(content):
    # 等同于droid.search(content)
    action="android.intent.action.WEB_SEARCH"
    extras={
        "query":content,
    }
    intent=droid.makeIntent(action=action, extras=extras)
    droid.startActivityIntent(intent.result)

启动app

# 启动app
def launchAPP(appName):
    flag=False
    # 获取用户安装的app
    #  getInstalledPackages.APPS_ALL = 5  (所有应用)
    #  getInstalledPackages.APPS_USER = 4 (用户应用,默认)
    #  getInstalledPackages.APPS_SYSTEM = 3 (系统应用)
    #  getInstalledPackages.APPS_SYSTEM_UPDATED = 2 (系统已更新应用)
    #  getInstalledPackages.APPS_SYSTEM_NOT_UPDATED = 1 (系统未更新应用)
    installedAPPs=droid.getInstalledPackages(flag=droid.getInstalledPackages.APPS_USER)
    if appName not in installedAPPs.result.values():
        droid.makeToast(f"{appName}未安装")
        return flag
    # 获取可启动包名、类名、应用名
    apps=droid.getLaunchablePackages(True)
    appsInfo=[(k, v.split('|')[0], v.split('|')[1]) for k, v in apps.result.items()]
 
    if appName not in [a[2] for a in appsInfo]:
        droid.makeToast(f"{appName}无权限启动")
        return flag
    packagename=[p[0] for p in appsInfo if p[2] == appName]
    classname=[p[1] for p in appsInfo if p[2] == appName]
    droid.launch(classname=classname[0], packagename=packagename[0], wait=True)
    flag=True
    return flag

安装app(该方法无法执行,未授权)

FLAG_ACTIVITY_NEW_TASK=268435456
def installAPP(apkPath):
    "无安装其他app权限"
    action="android.intent.action.VIEW"
    uri=droid.pathToUri(apkPath).result
    mime="application/vnd.android.package-archive"
    flags=FLAG_ACTIVITY_NEW_TASK
    intent=droid.makeIntent(action=action,uri=uri,type=mime,flags=flags)
    droid.startActivityIntent(intent.result)

卸载app

def unInstallAPP(packageName):
    #  
    action="android.intent.action.DELETE"
    uri=f"package:{packageName}"
    intent=droid.makeIntent(action=action,uri=uri)
    droid.startActivityIntent(intent.result)

拨打电话

def dial(phone):
    action="android.intent.action.CALL"
    uri=f"tel:{phone}"
    intent=droid.makeIntent(action=action,uri=uri)
    droid.startActivityIntent(intent.result)

打开系统设置

ACTION_SETTINGS   android.settings.SETTINGS 
ACTION_BLUETOOTH_SETTINGS     android.settings.BLUETOOTH_SETTINGS
修改成对应字符串即可
字段列表:
ACTION_SETTINGS 系统设置
ACTION_APN_SETTINGS APN设置
ACTION_LOCATION_SOURCE_SETTINGS 位置和访问信息
ACTION_WIRELESS_SETTINGS 网络设置
ACTION_AIRPLANE_MODE_SETTINGS 无线和网络热点设置
ACTION_SECURITY_SETTINGS 位置和安全设置
ACTION_WIFI_SETTINGS 无线网WIFI设置
ACTION_WIFI_IP_SETTINGS 无线网IP设置
ACTION_BLUETOOTH_SETTINGS 蓝牙设置
ACTION_DATE_SETTINGS 时间和日期设置
ACTION_SOUND_SETTINGS 声音设置
ACTION_DISPLAY_SETTINGS 显示设置——字体大小等
ACTION_LOCALE_SETTINGS 语言设置
ACTION_INPUT_METHOD_SETTINGS 输入法设置
ACTION_USER_DICTIONARY_SETTINGS 用户词典
ACTION_APPLICATION_SETTINGS 应用程序设置
ACTION_APPLICATION_DEVELOPMENT_SETTINGS 应用程序设置
ACTION_QUICK_LAUNCH_SETTINGS 快速启动设置
ACTION_MANAGE_APPLICATIONS_SETTINGS 已下载(安装)软件列表
ACTION_SYNC_SETTINGS 应用程序数据同步设置
ACTION_NETWORK_OPERATOR_SETTINGS 可用网络搜索
ACTION_DATA_ROAMING_SETTINGS 移动网络设置
ACTION_INTERNAL_STORAGE_SETTINGS 手机存储设置
def startSettings(action="android.settings.SETTINGS"):
    droid.startActivity(action=action)

打开文件

FLAG_ACTIVITY_NEW_TASK=268435456
def openFile(path):
    action="android.intent.action.VIEW"
    uri=droid.pathToUri(path).result
    flags=FLAG_ACTIVITY_NEW_TASK
    intent=droid.makeIntent(action=action,uri=uri, flags=flags)
    droid.startActivityIntent(intent.result)

调用文件管理器选择图片

# 调用文件选择器选择图片
def pickPic():
    action="android.intent.action.PICK"
    mime="images/*"
    packagename="com.android.fileexplorer"
    classname="com.android.fileexplorer.activity.FileActivity"
    #intent=droid.makeIntent(action=action,type=mime, packagename=packagename, classname=classname)
    #f=droid.startActivityForResultIntent(intent.result)
    f=droid.startActivityForResult(action=action,type=mime, packagename=packagename, classname=classname)
    return f.result

发送短信

def smsSend(message, phone):
    action="android.intent.action.SENDTO"
    uri=f"smsto:{phone}"
    extras={
        "sms_body":message
    }
    action="android.intent.action.VIEW"
    droid.startActivity(action=action,uri=uri, extras=extras)

返回桌面

def backHome():
    action="android.intent.action.MAIN"
    categories=["android.intent.category.HOME"]
    intent=droid.makeIntent(action=action, categories=categories)
    droid.startActivityIntent(intent.result)

三、总结

文章中实例均采用qpython 3c自带sl4a完成,sl4a为提供了丰富的api和安卓交互,更多实例由大家自行探索。

本文由【产品经理不是经理】gzh同步发布,欢迎关注

标签:QPython,02,droid,SETTINGS,ACTION,实例,intent,action,android
From: https://www.cnblogs.com/bushrose/p/17084488.html

相关文章

  • 2022 CCPC 桂林
    B题面看着很吓人,但只要读完就发现很好理解,并且根据题意暴力状压DP即可。原本忘记可以调顺序,发现后纠结了一下,注意到重复选必然更劣故不用管,所以状压转移的时候,直接枚举选......
  • 2023年2月1日23:04:39
    搞个坤坤坤技不够,算了。今天还算不错,把昨天 的任务超额完成了。有一个地方用的时间比较久,一个是你自己学的时候不专心,当然人是不可能一直保持专注的,但你不要老走神,还有......
  • K 小沙の抱团 easy【2023牛客寒假算法基础集训营5】
    K 小沙の抱团easy原题链接思路代码点击查看代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>......
  • 【基础知识笔记】021 三维数据可视化
    1-1曲线图绘制与二维绘图命令类似,在三维坐标下有三维的基本绘图命令plot3,其使用方法与plot相仿。plot3的调用格式如下。格式一:\(plot3(x,y,z)\)若\(x,y,z\)为相同......
  • 【基础知识笔记】020 二维数据可视化
    1.图形绘制基础1.1离散数据及离散函数一个二元实数标量对\((x_0,y_0)\)可以用平面上的点来表示,一个二元实数标量组\([(x_1,y_1)(x_2,y_2)…(x_n,y_n)]\)可以用平面上......
  • H 小沙の店铺【2023牛客寒假算法基础集训营5】
    H 小沙の店铺原题链接代码点击查看代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<qu......
  • A 小沙の好客【2023牛客寒假算法基础集训营5】
    A 小沙の好客原题链接‘代码点击查看代码#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<cmath>#include<vector>#include<......
  • 【PER #1】捉迷藏 / Ptz2022 Day1.Kyoto U L 题解
    今天心血来潮想改一改pj的题,发现了这场easyround的A还没改……跟自己和解了,想了两天没想明白,说说大致思路。题目链接只考虑一组询问怎么做,先把\(v\)当作根,称......
  • B 小沙の博弈【2023牛客寒假算法基础集训营5】
    B 小沙の博弈原题链接题意字典序贪心思路考虑需要使自己的字典序比对方小,那么每次都尽可能的少选,由于每次必须选择一个,那么双方都会一直选择一个直至石子被取完。当......
  • Spring Security Form表单认证代码实例
    SpringSecurityForm表单认证SpringSecurity中,常见的认证方式可以分为HTTP层面和表单层面,如下:HTTP基本认证Form表单认证HTTP摘要认证SpringSecurityForm表单实......