当前位置: 首页 > news >正文

菏泽北京网站建设官方网站开发公司

菏泽北京网站建设,官方网站开发公司,dedecms做电商网站,网页设计与网站建设完全教程1权限的获取和调用 权限分为普通权限和危险权限#xff0c;除了日历信息#xff0c;电话#xff0c;通话记录#xff0c;相机#xff0c;通讯录#xff0c;定位#xff0c;麦克风#xff0c;电话#xff0c;传感器#xff0c;界面识别#xff08;Activity-Recognit…1权限的获取和调用 权限分为普通权限和危险权限除了日历信息电话通话记录相机通讯录定位麦克风电话传感器界面识别Activity-Recognition,SMS和存储权限11组是危险权限之外其他都是普通权限。 普通权限只需要在xml文件中声明即可使用相应的权限但是对于危险权限的获取需要在代码中进行动态的由用户确认才行。 以打电话为例进行危险权限的调用和同意需求在一个应用中点击按钮就可以直接到电话应用中进行电话的拨打 前置工作准备好按钮和连接好模拟器等简单工作然后进行申请权限操作 class PhoneCallActivity:AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.content_provider_phonecall)phone_call.setOnClickListener(){//一点击这个按钮就要让他拨打电话拨打电话属于危险权限所以需要进行权限的申请先判断当前权限是否已经被允许如果没有被允许则需要去请求权限三个参数第二个参数是一个数组存放所有需要的权限第三个参数是一个唯一的标识用来在下面方法中针对当前请求进行再次处理的逻辑if(ContextCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE)!PackageManager.PERMISSION_GRANTED){//如果当前权限还没有授权就去请求权限ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CALL_PHONE),1)}else{call()}}//父类的请求权限允许的解过只要用户进行结果确认之后不管结果如何都会调用这个方法override fun onRequestPermissionsResult(requestCode: Int,permissions: Arrayout String,grantResults: IntArray) {super.onRequestPermissionsResult(requestCode, permissions, grantResults)when(requestCode){1-{if(grantResults.isNotEmpty()grantResults[0]PackageManager.PERMISSION_GRANTED){call()}else{Toast.makeText(this,您未授权允许进行拨号,Toast.LENGTH_SHORT).show()}}}}private fun call(){try{val intentIntent(Intent.ACTION_CALL)intent.data Uri.parse(tel:10086)startActivity(intent)}catch (e:SecurityException){e.printStackTrace()}}}别忘了在xml文件中进行拨号权限的声明 uses-permission android:nameandroid.permission.CALL_PHONE/2使用ContentResolver来获取其他应用中的数据 场景在当前应用程序中获取通讯录 前置准备一个按钮一个即将展示通讯录内容的recyclerview界面在模拟器上新建几个用户 确定其用户名和电话然后开始进行数据的调用的权限访问工作 1因为涉及到点击按钮时进行界面的跳转所以需要声明contact通讯录的实体类而且还要其进行实现序列化接口因为要在intent中传输 1实体类 import java.io.Serializable class ContactFriend(val name:String,val number:String):Serializable2 class PhoneCallActivity:AppCompatActivity() {//存放所有读取的通讯录名单private lateinit var list:ArrayListContactFriendoverride fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.content_provider_phonecall)phone_call.setOnClickListener(){//一点击这个按钮就要让他拨打电话拨打电话属于危险权限if(ContextCompat.checkSelfPermission(this,Manifest.permission.CALL_PHONE)!PackageManager.PERMISSION_GRANTED){//如果当前权限还没有授权就去请求权限ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.CALL_PHONE),1)}else{call()}}//一点击之后需要跳转到另一个界面上用来展示当前的所有数据所有需要跳转到一个新的界面show_contact.setOnClickListener(){//当前权限是否获取如果没获取就去申请如果获取过了就直接进行跳转显示即可if(ContextCompat.checkSelfPermission(this,Manifest.permission.READ_CONTACTS)!PackageManager.PERMISSION_GRANTED){ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.READ_CONTACTS),2)}else{readContacts()val intentIntent(this,DisplayPhoneContact::class.java)intent.putExtra(contacts,list)//Log.d(tong,第一个好友姓名${list[0].name}第一个好友电话${list[0].number})startActivity(intent)}}}//父类的请求权限允许的解过override fun onRequestPermissionsResult(requestCode: Int,permissions: Arrayout String,grantResults: IntArray) {super.onRequestPermissionsResult(requestCode, permissions, grantResults)when(requestCode){1-{if(grantResults.isNotEmpty()grantResults[0]PackageManager.PERMISSION_GRANTED){call()}else{Toast.makeText(this,您未授权允许进行拨号,Toast.LENGTH_SHORT).show()}}2-{if(grantResults.isNotEmpty()grantResults[0]PackageManager.PERMISSION_GRANTED){//readContacts()//Toast.makeText(this,感谢您的信任,Toast.LENGTH_SHORT).show()readContacts()val intentIntent(this,DisplayPhoneContact::class.java)intent.putExtra(contacts,list)startActivity(intent)}else{Toast.makeText(this,您未授权允许查看通讯录,Toast.LENGTH_SHORT).show()}}}}private fun call(){try{val intentIntent(Intent.ACTION_CALL)intent.data Uri.parse(tel:10086)startActivity(intent)}catch (e:SecurityException){e.printStackTrace()}}SuppressLint(Range)private fun readContacts(){list ArrayListContactFriend()contentResolver.query(ContactsContract.CommonDataKinds.Phone.CONTENT_URI,null,null,null,null)?.apply{while(moveToNext()){val namegetString(getColumnIndex(ContactsContract.CommonDataKinds.Phone.DISPLAY_NAME))val numbergetString(getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER))list.add(ContactFriend(name,number))}close()}} }3获取到数据之后在另一个界面进行数据的展示所以需要layout中由recyclerview展示数据所有又牵扯到Adapter的编写如下 每个item ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_height90dpTextViewandroid:idid/contact_nameandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1/TextViewandroid:idid/contact_numberandroid:layout_widthmatch_parentandroid:layout_height0dpandroid:layout_weight1//LinearLayout展示通讯录数据界面 ?xml version1.0 encodingutf-8? LinearLayout xmlns:androidhttp://schemas.android.com/apk/res/androidandroid:orientationverticalandroid:layout_widthmatch_parentandroid:layout_heightmatch_parentandroidx.recyclerview.widget.RecyclerViewandroid:idid/recycler_phone_contactandroid:layout_widthmatch_parentandroid:layout_heightmatch_parent//LinearLayoutadapter的编写 package com.njupt.kotlinlearn.contendProviderimport android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.recyclerview.widget.RecyclerView import com.njupt.kotlinlearn.R import com.njupt.kotlinlearn.entity.ContactFriendclass ContactsAdapter (var contactList:ListContactFriend):RecyclerView.AdapterContactsAdapter.ViewHolder(){inner class ViewHolder(view:View):RecyclerView.ViewHolder(view){val name:TextViewview.findViewById(R.id.contact_name)val number:TextViewview.findViewById(R.id.contact_number)}override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ContactsAdapter.ViewHolder {val viewLayoutInflater.from(parent.context).inflate(R.layout.content_provider_display_contact_item,parent,false)var viewHolderViewHolder(view)return viewHolder}override fun onBindViewHolder(holder: ContactsAdapter.ViewHolder, position: Int) {val contactcontactList[position]holder.name.textcontact.nameholder.number.textcontact.number}override fun getItemCount(): Int {return contactList.size}}数据展示 class DisplayPhoneContact:AppCompatActivity() {override fun onCreate(savedInstanceState: Bundle?) {super.onCreate(savedInstanceState)setContentView(R.layout.content_provider_display_contact)//跳转过来之后获取到intent中的数据然后进行绑定Adapter数据展示val contactsintent.getSerializableExtra(contacts) as ArrayListContactFriend//准备好数据之后可以进行数据在当前界面的展示绑定Adapterval recyclerViewfindViewByIdRecyclerView(R.id.recycler_phone_contact)val layoutManagerLinearLayoutManager(this)recyclerView.layoutManagerlayoutManagerrecyclerView.adapterContactsAdapter(contacts)} }最后即可将数据进行展示在界面上如下
http://www.yingshimen.cn/news/76445/

相关文章:

  • 建设大型网站设计公司品牌营销的四大策略
  • 国家工信部网站备案中文搭建式软件开发工具
  • 做网站之前需要准备什么软件湖州市住房和城乡建设局官方网站
  • 免费自助建站快速自助建站西宁做网站多少钱
  • 新网网站内部优化网络营销论文选题
  • 美团网网站建设分析广州 网站建设网络推广网页设计
  • 西湖南昌网站建设公司南召seo快速排名价格
  • 杭州的网站建设公司汕尾住房和建设局网站首页
  • 高埗镇网站建设公司手机网站设计公司只找亿企邦
  • 做电脑网站手机能显示不出来网站建设流程发布网站和网页制作
  • 招商网站建设简介电商有哪些推广方法
  • 二级网站建设wordpress计划本
  • 建站程序员招聘稿定设计免费版
  • logopond设计网站win7一键优化工具
  • 学做网网站论坛手机做服务器建网站
  • 淘宝客网站推广位怎么做网站建设主要研究内容
  • 单位建设网站用途广告设计学校
  • 成都专业网站推广安平县做百度网站电话
  • 南京宣传片公司有哪些长沙网站包年优化
  • 文创设计网站郑州今晚发布会
  • 网站宣传页面模板网站建设书 模板下载
  • 17网站一起做网店广州沙河网站建设预算项目
  • 中国建设银行网站成都第七支行wordpress 不显示归档
  • 新网站建设ppt三合一网站有必要吗
  • 关于外贸公司的网站模板印度vps
  • 企业在线培训系统2018企业网站优化应该怎么做
  • 二手交易网站开发方式旅游网站设计方案
  • asp.net 2.0网站开发全程解析 下载国家企业营业执照查询
  • 上海工程建设咨询有限公司seo百度刷排名
  • 网站销售需要什么手续网站开发入门需要学什么