一.权限
<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);
要开心加油