day7 照相机fileprovider(拍照+摄像+浏览器+打电话+截屏)

本文详细介绍了Android中各种权限的使用方法,包括调用相机、浏览器、拨打电话等常见功能所需的权限声明,以及如何通过Intent启动这些功能。同时,文章还提供了具体的代码示例,帮助开发者更好地理解和应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

权限

隐式

MediaStore.ACTION_IMAGE_CAPTURE----拍照
MediaStore.ACTION_VIDEO_CAPTURE----摄像
Intent.ACTION_CALL---------------打电话
Intent.ACTION_VIEW---------------浏览器

清单文件

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

打开浏览器

//打开浏览器
bt1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_VIEW);
        intent.setData(Uri.parse("http://www.baidu.com"));
        startActivity(intent);
    }
});

打电话

//打电话
bt2.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(Intent.ACTION_CALL);
        intent.setData(Uri.parse("tel:"+"电话号码"));
        startActivity(intent);
    }
});

拍照

bt3.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(MediaStore.ACTION_IMAGE_CAPTURE);
        File file = new File("/sdcard/DCIM/Camera/"+"a.png");
        Uri uri = FileProvider.getUriForFile(MainActivity.this,"com.bw.1705",file);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,uri);
        startActivityForResult(intent,IMAGE);
    }
});

摄影

//打开摄像
bt4.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(MediaStore.ACTION_VIDEO_CAPTURE);
        startActivityForResult(intent,VIEDO);
    }
});

截屏

//打开截屏
bt5.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        View decorView = getWindow().getDecorView();
       decorView .setDrawingCacheEnabled(true);
        decorView.buildDrawingCache();
        Bitmap drawingCache = decorView.getDrawingCache();
        img.setImageBitmap(drawingCache);
        try {
            drawingCache.compress(Bitmap.CompressFormat.PNG,100,new FileOutputStream("/sdcard/DCIM/Camera/"+"a.png"));
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }

    }
});

ActivityResult

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode==VIEDO&&resultCode==Activity.RESULT_OK){
        Uri data1 = data.getData();
        vv.setVideoURI(data1);
        vv.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
            @Override
            public void onPrepared(MediaPlayer mp) {
                vv.start();
            }
        });
    }else if(requestCode==IMAGE&&resultCode==Activity.RESULT_OK){

    }
}

FileProvider

清单文件

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:roundIcon="@mipmap/ic_launcher_round"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
    <provider
        android:exported="false"
        android:grantUriPermissions="true"
        android:authorities="com.bw.1705"
        android:name="android.support.v4.content.FileProvider">
        <meta-data android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/path"></meta-data>
    </provider>
</application>

xml-path

<paths xmlns:android="http://schemas.android.com/apk/res/android">
<external-path
    name="mypath"
    path="DCIM"/>
</paths>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值