Android 获取手机应用数据 联系人,图片,拍照等

这篇具有很好参考价值的文章主要介绍了Android 获取手机应用数据 联系人,图片,拍照等。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1、获取手机联系人

获取手机信息前得获取权限

在得到权限后就能获取到手机联系人的信息

在manifest里面注册权限

 <uses-permission android:name="android.permission.READ_CONTACTS" />

判断是否有权限

//请求权限
    public void requestPermission(){
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
        == PackageManager.PERMISSION_GRANTED){//应用需求权限是否已经授权0已授权-1没有授权
            //有权限的处理事件
//            List<Contact> contacts=getContacts();
//            for (Contact c:contacts) {
//                Log.d("","re===="+c.toString());
//            }
        }  else {//没有权限进行申请
            ActivityCompat.requestPermissions(this
            ,new String[]{Manifest.permission.READ_CONTACTS},1);

        }
    }

获取联系人数据

//获取联系人信息
    private List<Contact> getContacts() {
        List<Contact> contacts=new ArrayList<>();
        ContentResolver resolver = getContentResolver();
        Uri uri= ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//电话的URI
        Cursor cursor = resolver.query(uri
                , new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}//手机的联系人,联系电话号
                , null, null, null);

        String sql="insert into phonepeople(name,phone) values(?,?)";
        SQLiteDatabase db=helper.getWritableDatabase();

                while (cursor.moveToNext()){
                    String name=cursor.getString(0);
                    String phone=cursor.getString(1);
                    contacts.add(new Contact(name,phone));
                    db.execSQL(sql,new Object[]{name,phone});
                }
                cursor.close();//关闭
                return contacts;
    }

附加一个请求权限的返回处理

 //处理权限返回值
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode==1//判断请求码是否匹配到
        &&Manifest.permission.READ_CONTACTS.equals(permissions[0])//权限是否匹配
        &&grantResults[0]==PackageManager.PERMISSION_GRANTED){//返回的数值判断是否获得权限0获得-1没有
//            List<Contact> contacts=getContacts();
//            for (Contact c:contacts) {
//                Log.d("","on===="+c.toString());
//            }
        }else {
            Toast.makeText(this, "您没有权限读取联系人信息", Toast.LENGTH_LONG).show();
        }
    }

2、获得手机相册的里的图片

private void getPicFromAlbum() {
        //跳转到相册去挑选
        Intent intent=new Intent(Intent.ACTION_PICK);
        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");//
        startActivityForResult(intent,REQUEST_ALBUME);//需要返回数据

    }

处理返回的图片方式,根据业务需求可以进行自己设置,在此只是显示出来

//处理返回数据
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode==REQUEST_ALBUME){
            //图库
            Uri uri=data.getData();
            imageView.setImageURI(uri);//将图库照片显示
        }else if (requestCode==REQUEST_IMAGE){
            //拍照
            imageView.setImageURI(imageuri);//将拍的照片显示
        }

    }

3、调用手机拍照

 在manifest里面设置

<provider
            android:authorities="com.hfzy.mydome0805.dome1.fileprovider"
            android:name="androidx.core.content.FileProvider"
            android:grantUriPermissions="true">
            <meta-data android:resource="@xml/file_path" android:name="android.support.FILE_PROVIDER_PATHS"/>
        </provider>

创建@xml/file_path文件

android 获取通讯录权限,android,android studio

 

<paths xmlns:android="http://schemas.android.com/apk/res/android">

    <external-cache-path
        name="external_cache_path"
        path="."/>
</paths>

最后在进行调用

File file=new File(getExternalCacheDir(),"temp.jpg");
        imageuri=FileProvider.getUriForFile(this,"com.hfzy.mydome0805.dome1.fileprovider",file);
 private void getPicFromCamera() {
        //拍照
        Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);//拍的图片存储在哪里
        startActivityForResult(intent,REQUEST_IMAGE);

    }

 返回值的处理同上面相册返回数据的处理

联系人完整代码

public class MainActivity extends AppCompatActivity {

    private List<Contact> contactList=new ArrayList<>();
    private DBHelper helper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        helper=new DBHelper(this,2);//创建表格

        ListView listView=findViewById(R.id.listV);

        requestPermission();
        contactList=getContacts();
        Myadapt myadapt=new Myadapt(this,contactList);//自定义的适配器
        listView.setAdapter(myadapt);


        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
                Intent intent=new Intent();
                Contact contact=contactList.get(i);
                intent.putExtra("name",contact.getName());
                intent.putExtra("phone",contact.getPhone());

                setResult(RESULT_OK,intent);
                finish();
            }
        });

    }

    //请求权限
    public void requestPermission(){
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_CONTACTS)
        == PackageManager.PERMISSION_GRANTED){//应用需求权限是否已经授权0已授权-1没有授权
            //有权限的处理事件
//            List<Contact> contacts=getContacts();
//            for (Contact c:contacts) {
//                Log.d("","re===="+c.toString());
//            }
        }  else {//没有权限进行申请
            ActivityCompat.requestPermissions(this
            ,new String[]{Manifest.permission.READ_CONTACTS},1);

        }
    }

    //处理权限返回值
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        super.onRequestPermissionsResult(requestCode, permissions, grantResults);
        if (requestCode==1//判断请求码是否匹配到
        &&Manifest.permission.READ_CONTACTS.equals(permissions[0])//权限是否匹配
        &&grantResults[0]==PackageManager.PERMISSION_GRANTED){//返回的数值判断是否获得权限0获得-1没有
//            List<Contact> contacts=getContacts();
//            for (Contact c:contacts) {
//                Log.d("","on===="+c.toString());
//            }
        }else {
            Toast.makeText(this, "您没有权限读取联系人信息", Toast.LENGTH_LONG).show();
        }
    }

    //获取联系人信息
    private List<Contact> getContacts() {
        List<Contact> contacts=new ArrayList<>();
        ContentResolver resolver = getContentResolver();
        Uri uri= ContactsContract.CommonDataKinds.Phone.CONTENT_URI;//电话的URI
        Cursor cursor = resolver.query(uri
                , new String[]{ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME, ContactsContract.CommonDataKinds.Phone.NUMBER}//手机的联系人,联系电话号
                , null, null, null);

        String sql="insert into phonepeople(name,phone) values(?,?)";
        SQLiteDatabase db=helper.getWritableDatabase();

                while (cursor.moveToNext()){
                    String name=cursor.getString(0);
                    String phone=cursor.getString(1);
                    contacts.add(new Contact(name,phone));
                    db.execSQL(sql,new Object[]{name,phone});
                }
                cursor.close();//关闭
                return contacts;
    }
}

相册和拍照的完整代码文章来源地址https://www.toymoban.com/news/detail-529287.html

public class AfterActivity extends AppCompatActivity implements View.OnClickListener {

    public static final int REQUEST_ALBUME=1;
    public static final int REQUEST_IMAGE=2;
    private ImageView imageView;
    private Uri imageuri;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_after);

        Button button=findViewById(R.id.But1);
        Button button1=findViewById(R.id.But2);
        imageView=findViewById(R.id.IV);

        button.setOnClickListener(this);
        button1.setOnClickListener(this);

//        File filepath=getExternalCacheDir();
//        imageuri = Uri.fromFile(file);

        File file=new File(getExternalCacheDir(),"temp.jpg");
        imageuri=FileProvider.getUriForFile(this,"com.hfzy.mydome0805.dome1.fileprovider",file);

    }


    @Override
    public void onClick(View view) {
        switch (view.getId()){
            case R.id.But1:
                getPicFromAlbum();
                break;
            case R.id.But2:
                getPicFromCamera();
                break;
        }
    }

    private void getPicFromCamera() {
        //拍照
        Intent intent=new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
        intent.putExtra(MediaStore.EXTRA_OUTPUT,imageuri);//拍的图片存储在哪里
        startActivityForResult(intent,REQUEST_IMAGE);

    }

    private void getPicFromAlbum() {
        //跳转到相册去挑选
        Intent intent=new Intent(Intent.ACTION_PICK);
        intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");//
        startActivityForResult(intent,REQUEST_ALBUME);//需要返回数据

    }

    //处理返回数据
    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);

        if (requestCode==REQUEST_ALBUME){
            //图库
            Uri uri=data.getData();
            imageView.setImageURI(uri);//将图库照片显示
        }else if (requestCode==REQUEST_IMAGE){
            //拍照
            imageView.setImageURI(imageuri);//将拍的照片显示
        }

    }
}

到了这里,关于Android 获取手机应用数据 联系人,图片,拍照等的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Android权限申请、相册选择图片、拍照、获取联系人、页面跳转

    目前第一版封装了:页面启动、页面启动回调、获取通讯录联系人、获取相册图片、拍照获取图片、单条权限申请、多条权限申请,且已适配到Android 13 导入 权限申请 权限申请支持单条权限和多条权限申请,支持强制拒绝后弹窗提示用户并引导区设置也开启权限 默认强制拒

    2024年02月16日
    浏览(38)
  • Android通讯录管理(获取联系人、通话记录、短信消息)(二)(3),开源新作

    android:background=“#000000” ListView android:id=“@+id/call_log_list” android:layout_width=“fill_parent” android:layout_height=“fill_parent” android:layout_alignParentTop=“true” android:cacheColorHint=“#000000” android:fadingEdge=“none” android:scrollingCache=“false” android:visibility=“visible” / /Contact_Demo/res/layout/

    2024年04月14日
    浏览(28)
  • 简单步骤:Android studio 内容提供者 - 实现建立手机通讯录界面,读取系统联系人

    提示:本篇文章将会尽量保持精简,同时请诸位敲写代码时保持耐心,三连是最大的支持! 文章目录 前言 一、项目介绍 二、使用步骤 1.创建程序 2.添加 recyclerview-v7 库 3.放置界面控件 4.搭建界面布局 5.封装实体类 6.编写数据适配器 7.实现显示界面数据功能 8.去掉默认标题栏

    2024年02月08日
    浏览(37)
  • Android——Sqlite数据库——实现联系人信息的添加、查询、修改以及删除功能

        掌握常用布局和基本控件的使用方法     掌握界面图像显示的使用方法     掌握SQLite数据库的创建和基本操作方法 通过线性布局和相对布局来搭建Activity界面,在MainActivity中编写逻辑代码,运行程序,输入两条联系人信息分别点击“添加”“查询”“修改”“

    2024年02月07日
    浏览(33)
  • 苹果手机怎么恢复通讯录联系人

    随着社交媒体和移动互联网的快速发展,手机已经成为我们日常生活不可或缺的一部分。在手机中,通讯录联系人是我们很重要的一部分数据,这些联系人包括亲友、同事、客户等等。但有时候,由于各种原因,我们可能会不小心删除或者丢失这些重要的联系人信息。这时候

    2024年02月12日
    浏览(34)
  • 手机联系人批量导入(字符编码、xlsx与vcf互转)

    单位同事每人都办理了一个192新手机号,一打过来不知道是谁,又懒的一个个保存姓名。一想是不是可以批量导入呢?电子表格号码名单我有啊,试试吧。 1.先下载手机联系人文件看看吧。在手机联系人设置中有个导出选项(华为手机为例):  导出文件为00001.vcf,用文本编辑

    2024年02月09日
    浏览(33)
  • Android中两种选择联系人方式

    1.在选择联系人方式网上也有很多案例 有的说是使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI也有的说是使用ContactsContract.Contacts.CONTENT_URI其实这两种方式都可以使用 只不过ContactsContract.Contacts.CONTENT_URI这种方式需要多查询一遍 一、使用ContactsContract.CommonDataKinds.Phone.CONTENT_URI跳转

    2024年01月17日
    浏览(22)
  • 企业微信工具栏获取外部联系人unionid

    企业微信H5获取外部联系人unionid 使用企业微信获取外部联系人unionid关联小程序,优先需要知道的是,企业微信可以通过用户userid获取到unionid,小程序可以通过openid,获取unionid,但是无法获取userid或者openid,两者只能通过统一unionid来关联。 特别需要注意的是,如果开发者拥

    2024年02月08日
    浏览(75)
  • 安卓手机迁移到ios设备(音乐,视频,联系人,短信,图片,备忘录等)

    音乐,视频,联系人,短信,图片迁移 可以参考如下方法: 安卓手机的一键换机功能: 百度经验 使用ios设备上的“转移到 iOS”App 使用谷歌商店下载 如果无法访问谷歌商店,可以通过此方式获取 备忘录迁移 有些困难,可以参考如下方法: 备忘录不具备一键迁移,或者一键

    2024年02月09日
    浏览(37)
  • 【Excel高效工作1】5分钟,从Excel中批量将联系人信息导入手机电话簿

    今天帮辅导员解决了这个问题,批量把电脑 Excel 里的 “姓名+手机号码”信息 导入手机的联系人中。网上找了一些资料,自己优化了部分过程,最后找到了一种比较高效的方法。 5分钟 ,就可以把一整个年级 上百人 的信息导入手机联系人通讯录, 免去了一个个手动输入的痛

    2024年02月09日
    浏览(102)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包