照相机+录像+截屏+打电话+浏览器
权限
<uses-permission android:name="android.permission.INTERNET"/>
<!--读写内存-->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!--打电话权限-->
<uses-permission android:name="android.permission.CALL_PHONE"/>
<!--照相机权限-->
<uses-permission android:name="android.permission.CAMERA"/>
字段
电话:Intent.ACTION_CALL
浏览器:Intent.ACTION_VIEW
录像:MediaStore.ACTION_VIDEO_CAPTURE
照相机:MediaStore.ACTION_IMAGE_CAPTURE
截屏+打电话+浏览器
浏览器
private void openChrome() {
Intent intent = new Intent();
//设置频道
intent.setAction(Intent.ACTION_VIEW);
Uri uri = Uri.parse("https://alpha.wallhaven.cc/");
intent.setData(uri);
startActivity(intent);
}
打电话
private void call() {
Intent intent = new Intent();
intent.setAction(Intent.ACTION_CALL);
intent.setData(Uri.parse("tel:"+"110"));
startActivity(intent);
}
截屏
private void jieping() {
View view = getWindow().getDecorView();
view.setDrawingCacheEnabled(true); //可以缓存
view.buildDrawingCache(); //缓存一下截图
Bitmap bitmap = view.getDrawingCache();
imageView.setImageBitmap(bitmap);//展示控件
//存入SD卡
try {
//第一个参数 :图片的格式 ; 第二个参数:图片质量 0-100 ;第三个参数 :文件流,存的位置
bitmap.compress(Bitmap.CompressFormat.PNG,100,new FileOutputStream("/sdcard/a.png"));
} catch (FileNotFoundException e) {
e.printStackTrace();
}
}
录像+照相机+FileProvider+保存SD卡
private void openCamera() {
//打开相机
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);//设置频道
//手动保存照片
uri= FileProvider.getUriForFile(this,"yu",new File("/sdcard/DCIM/a.PNG"));
//将照片存到SD卡中
intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
startActivityForResult(intent,110);
}
private void openVideo() {
//打开摄像机
Intent intent = new Intent();
intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);//设置频道
startActivityForResult(intent,100);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode==100 && resultCode== Activity.RESULT_OK) {
Uri uri = data.getData();
vv.setVideoURI(uri);
vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(MediaPlayer mediaPlayer) {
vv.start();
}
});
}else if(requestCode==110 && resultCode== Activity.RESULT_OK){
imageView.setImageURI(uri);
}
}
清单文件注册:
<!--name :FileProvider全类名
exported:表示该 FileProvider 是否需要公开出去
granUriPermissions:是否允许授权文件的临时访问权限-->
<provider
android:authorities="yu"
android:name="androidx.core.content.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<!--操作文件的路径 resource xml文件定义路径 -->
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/xml">
</meta-data>
</provider>
文件路径:
<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<!--external-path 代表SD卡根路径,path代表根路径下的子文件夹 -->
<external-path
name="mypath"
path="DCIM">
</external-path>
</paths>