Android 开发常用的 kotlin 工具方法
程序员文章站
2024-02-11 00:02:46
...
快一个月没更新博文了,最近业余时间在写 Flutter_WanAndroid 项目以及一个小程序。后续都会更新博文介绍项目中遇到的问题和解决办法。这里先分享下最近在公司项目上使用 Kotlin 开发使用的一些工具类。
- 调用拍照
- 拨打电话、发送短信
- 启动系统权限设置页面
- 启动应用市场
- 使用 WPS 打开文件
- 调用拍照
新建 xml 文件,存放路径
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
name="external_files"
path="creaway/"/>
</paths>
调用方法
override fun takePhoto(activity: Activity, requestCode:Int) {
var outputImage = File(activity.externalCacheDir,"test_image.jpg")
try{
if(outputImage.exists()) {
outputImage.delete()
}
}catch (ex: IOException) {
ex.printStackTrace()
}
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
imageUri = Uri.fromFile(outputImage)
}else {
imageUri = FileProvider.getUriForFile(activity,"android.support.v4.content.FileProvider",outputImage)
}
val intent = Intent("android.media.action.IMAGE_CAPTURE")
intent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
activity.startActivityForResult(intent, requestCode)
}
处理得到的结果
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// 处理返回的结果
}
}
}
- 拨打电话、发送短信
btn_phone.setOnClickListener {
var intent = Intent(Intent.ACTION_DIAL)
intent.data = Uri.parse("tel:${user!!.phone_number}")
startActivity(intent)
}
btn_message.setOnClickListener {
var intent = Intent(Intent.ACTION_SENDTO)
intent.data = Uri.parse("smsto:${user!!.phone_number}")
intent.putExtra("sms_body", "")
startActivity(intent)
}
- 启动系统权限设置页面
startActivityForResult(
Intent(Settings.ACTION_APPLICATION_DETAILS_SETTINGS)
.setData(Uri.fromParts("package", packageName, null)),7534
)
- 启动应用市场
// 跳转应用市场下载 wps
var uri = Uri.parse("market://details?id=cn.wps.moffice_eng")
var intent = Intent(Intent.ACTION_VIEW, uri)
if (intent.resolveActivity(getPackageManager()) != null) {
startActivity(intent)
} else {
//要调起的应用不存在时的处理
Log.e("TAG","应用市场不存在,不能下载 WPS ")
}
- 使用 WPS 打开文件
fun openFile(context: Context, fileUrl: String?, fileType:String?): Boolean {
if ("jpg".equals(fileType) || "jpeg".equals(fileType) || "gif".equals(fileType) || "png".equals(fileType)) {
ToastUtils.showToast(context, "文件类型错误")
} else {
//检测是否安装了wps软件,没有安装则去下载
if (isAvuliable(context, "cn.wps.moffice_eng")) {
val intent = context.getPackageManager().getLaunchIntentForPackage("cn.wps.moffice_eng")
val bundle = Bundle()
// 这里采用传入文档的在线地址进行打开,免除下载的步骤,也不需要判断安卓版本号
intent.setData(Uri.parse(fileUrl))
intent.putExtras(bundle)
context.startActivity(intent)
} else {
// 跳转应用市场下载 wps
var uri = Uri.parse("market://details?id=cn.wps.moffice_eng")
var intent = Intent(Intent.ACTION_VIEW, uri)
if (intent.resolveActivity(context.getPackageManager()) != null) {
context.startActivity(intent)
} else {
// 要调起的应用不存在时的处理
ToastUtils.showToast(context, "请先下载 WPS 后再点击打开")
}
}
}
return true
}
private fun isAvuliable(context: Context, packageName: String): Boolean {
var packageManager = context.packageManager
var packageInfo = packageManager.getInstalledPackages(0)
packageInfo.forEach {
if (it.packageName.equals(packageName, true)) {
return true
}
}
return false
}
ps:其实有其他面向对象语言,入门 kotlin 真的很快,尤其是有 Java 基础。配合 菜鸟教程,哪里不会查哪里,基本就能入门了。
推荐阅读
-
Android 开发常用的 kotlin 工具方法
-
Android开发实现webview中img标签加载本地图片的方法
-
Android开发实现的IntentUtil跳转多功能工具类【包含视频、音频、图片、摄像头等操作功能】
-
详解Kotlin Android开发中的环境配置
-
Android开发实现根据包名判断App运行状态的方法
-
Android 7.0开发获取存储设备信息的方法
-
android开发 eclipse alt+”/”自动提示失效的解决方法
-
Android开发 获取屏幕宽高及尺寸的方法
-
Android开发中RecyclerView隐藏item的所在区域显示空白的方法
-
Android IoT开发实战 | 03 - Android日志工具Log的使用