赞
踩
- /**
- * Activity 生命周期
- * 主要有7个方法
- * onCreate() 创建,初始化控件,绑定监听器
- * onStart() 启动,显示控件到界面上,启动线程/服务
- * onResume() 恢复,可以与用户交互,点击,计时器重新开启
- * onPause() 暂停,不能与用户交互,保留一些状态,计时器暂停
- * onStop() 停止,界面完全看不到的时候
- * onRestart() 重启,重新显示控件到界面上
- * onDestroy() 销毁,finish(),暂停线程,回收资源
- *
- * 第一个场景
- * 启动Activity
- * onCreate-->onStart-->onResume
- * 点击Home键
- * onPause-->onStop
- * 点击最近任务键
- * onRestart-->onStart-->onResume
- *
- * 第二个场景:与其他Activity切换的时候
- * 启动第一个Activity
- * onCreate-->onStart-->onResume
- * 当跳转第二个界面
- * 第一个页面 onPause
- * 第二个界面 onCreate-->onStart-->onResume
- * 第一个界面 onStop
- * 第二个页面关闭的时候
- * 第二个界面 onPause
- * 第一个界面 onRestart-->onStart-->onResume
- * 第二个界面 onStop-->onDestroy
- * 点击设备的返回键,相当于调用finish()
- * 第一个界面点击返回键 onPause-->onStop-->onDestroy
- *
- *
- * 横竖屏切换场景:
- * 不影响
- * android:screenOrientation="portrait"竖屏 landscape横屏
- * 从竖屏-->横屏
- * onPause-->onStop-->onDestroy
- * onCreate-->onStart-->onResume
- * 从横屏-->竖屏
- * onPause-->onStop-->onDestroy
- * onCreate-->onStart-->onResume
- * 如果不每次切换都调用onCreate方法
- * 1、重写onConfigurationChanged方法
- * 2、在Manifest.xml中设置android:configChanges="keyboardHidden|orientation|screenSize"
- *
- * if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_LANDSCAPE)判断是否是横屏
- if (getResources().getConfiguration().orientation==Configuration.ORIENTATION_PORTRAIT)判断是否是竖屏
- ORIENTATION_LANDSCAPE==2横屏
- ORIENTATION_PORTRAIT==1竖屏
- ORIENTATION_UNDEFINED==0未定义
- *
- * 也可创建layout-land 文件(横屏,默认layout文件为竖屏),xml名相同,id也相同
- * 系统会自动区分,进行运行
- */
在Intent中会涉及到权限的问题
在Manifist中添加
<uses-permission android:name="android.permission.CALL_PHONE"/>
在mainActivity中例如拨打电话
- Intent intent=new Intent();
- intent.setAction(Intent.ACTION_CALL);//直接拨打电话,系统要求权限
- intent.setData(Uri.parse("tel:137864826"));
- startActivity(intent);
- if (ActivityCompat.checkSelfPermission(this,permissions[0])
- == PackageManager.PERMISSION_GRANTED)//判断是否有权限
这是自己定义的方法:也可以不用
- public void checkAndRequestPermission(){//权限申请
- String[] permissions=new String[]{"android.permission.CALL_PHONE"};
-
- if (ActivityCompat.checkSelfPermission(this,permissions[0])
- == PackageManager.PERMISSION_GRANTED){
- //有权限
- call();
- } else{
- //没有权限,进行权限申请
- ActivityCompat.requestPermissions(this,permissions,REQUEST_PERMISSION_CALL_PHONE);
-
- }
- }
在 avtivity中重写onRequestPermissionsResult()方法,此方法为,权限结果返回后的处理方法
- //请求权限获取结果时调用
-
- @Override
- public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
- super.onRequestPermissionsResult(requestCode, permissions, grantResults);
- Log.d("onRequestPermissionsResult",""+grantResults[0]);
- if (requestCode==REQUEST_PERMISSION_CALL_PHONE){
- if ("android.permission.CALL_PHONE".equals(permissions[0])
- &&grantResults[0]==PackageManager.PERMISSION_GRANTED){
- // Log.d("onRequestPermissionsResult",""+permissions[0]);
- }else {
- Toast.makeText(this, "您尚未开启权限,部分功能可能会受影响", Toast.LENGTH_LONG).show();
- }
- }
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。