快一个月没更新博文了,最近业余时间在写 Flutter_WanAndroid 项目以及一个小程序。后续都会更新博文介绍项目中遇到的问题和解决办法。这里先分享下最近在公司项目上使用 Kotlin 开发使用的一些工具类。
- 调用拍照
- 拨打电话、发送短信
- 启动系统权限设置页面
- 启动应用市场
- 使用 WPS 打开文件
- 调用拍照
新建 xml 文件,存放路径
<?xml version="" encoding="utf-8"?>
<paths xmlns:android="">
<external-path
name="external_files"
path="creaway/"/>
</paths>
调用方法
override fun takePhoto(activity: Activity, requestCode:Int) {
var outputImage = File(,"")
try{
if(()) {
()
}
}catch (ex: IOException) {
()
}
if(Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
imageUri = (outputImage)
}else {
imageUri = (activity,"",outputImage)
}
val intent = Intent("")
(MediaStore.EXTRA_OUTPUT, imageUri)
(intent, requestCode)
}
处理得到的结果
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
(requestCode, resultCode, data)
if (requestCode == REQUEST_CODE) {
if (resultCode == RESULT_OK) {
// 处理返回的结果
}
}
}
- 拨打电话、发送短信
{
var intent = Intent()
intent.data = ("tel:${user!!.phone_number}")
startActivity(intent)
}
{
var intent = Intent()
intent.data = ("smsto:${user!!.phone_number}")
("sms_body", "")
startActivity(intent)
}
- 启动系统权限设置页面
startActivityForResult(
Intent()
.setData(("package", packageName, null)),7534
)
- 启动应用市场
// 跳转应用市场下载 wps
var uri = ("market://details?id=")
var intent = Intent(Intent.ACTION_VIEW, uri)
if ((getPackageManager()) != null) {
startActivity(intent)
} else {
//要调起的应用不存在时的处理
("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)) {
(context, "文件类型错误")
} else {
//检测是否安装了wps软件,没有安装则去下载
if (isAvuliable(context, "")) {
val intent = ().getLaunchIntentForPackage("")
val bundle = Bundle()
// 这里采用传入文档的在线地址进行打开,免除下载的步骤,也不需要判断安卓版本号
((fileUrl))
s(bundle)
(intent)
} else {
// 跳转应用市场下载 wps
var uri = ("market://details?id=")
var intent = Intent(Intent.ACTION_VIEW, uri)
if ((()) != null) {
(intent)
} else {
// 要调起的应用不存在时的处理
(context, "请先下载 WPS 后再点击打开")
}
}
}
return true
}
private fun isAvuliable(context: Context, packageName: String): Boolean {
var packageManager = context.packageManager
var packageInfo = packageManager.getInstalledPackages(0)
{
if ((packageName, true)) {
return true
}
}
return false
}
ps:其实有其他面向对象语言,入门 kotlin 真的很快,尤其是有 Java 基础。