本地应用Action

一.权限

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

动态获取权限

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    requestPermissions(new String[]{
            Manifest.permission.WRITE_EXTERNAL_STORAGE,
            Manifest.permission.READ_EXTERNAL_STORAGE,
            Manifest.permission.CALL_PHONE,
            Manifest.permission.CAMERA
    }, 101);
}
在这里插入代码片

二.电话

首先需要添加打电话的权限和动态获取权限

隐式跳转
intent设置Action:Intent.ACTION_CALL
需要设置要拨打的uri,即电话号码
固定格式Uri.parse(“tel”+“电话号码”);

private void call() {
    Intent intent = new Intent();
    //设置打电话
    intent.setAction(Intent.ACTION_CALL);
    //设置要拨打的电话
    intent.setData(Uri.parse("tel:" + "17696945424"));
    startActivity(intent);
}

三.录像

intent设置Action:MediaStore.ACTION_VIDEO_CAPTURE

Intent intent = new Intent();
//设置打开录像
intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
startActivityForResult(intent, 101);

四.浏览器

intent设置Action:Intent.ACTION_VIEW
setData方法设置打开的网址

Intent intent = new Intent();
//打开浏览器
intent.setAction(Intent.ACTION_VIEW);
//设置要打开的网址
intent.setData(Uri.parse("https://www.baidu.com"));
startActivity(intent);

五.从图库选择图片

intent设置Action:Intent.ACTION_PICK

Intent intent = new Intent();
//设置选择
intent.setAction(Intent.ACTION_PICK);
//选择图片
intent.setType("image/*");
startActivityForResult(intent, 102);

六.截屏

//TODO 1:获得窗体View
View decorView = getWindow().getDecorView();
//TODO 2:设置可以缓存
decorView.setDrawingCacheEnabled(true);
//TODO 3:缓存一下
decorView.buildDrawingCache();
//TODO 4:获得缓存的图片
Bitmap bitmap = decorView.getDrawingCache();
imgShow.setImageBitmap(bitmap);
//TODO 5:将Bitmap压缩到SD卡中
//参数一 格式  参数二 质量 0-100  参数三 输出流
//Bitmap.CompressFormat format, int quality, OutputStream stream
try {
    bitmap.compress(Bitmap.CompressFormat.JPEG,100,new FileOutputStream("/sdcard/DCIM/99.jpg"));
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

七.相机拍照

相机拍照不能直接保存,需要用到FileProvider

首先要在清单文件中注册
provider的name属性为FileProvider的全限定类名
authorities属性为当前包名
grantUriPermissions为给予权限
meta-data的name属性在FileProvider中获取
resource为自己创建的paths资源文件

res下创建资源文件夹xml
然后新建一个xml文件,根为paths

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
    name="myPath"
    path="DCIM"/>
</paths>
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="com.example.day3_30"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/paths" />

</provider>

Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
//获取uri
Uri uri = FileProvider.getUriForFile(this, "com.example.day3_30", new File(imgPath));
//保存文件
intent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
startActivityForResult(intent, 103);

要开心加油

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值