Android-----Intent中通过startActivity(Intent intent )隐式启动新的Activity
显式Intent我已经简单使用过了,也介绍过概念,现在来说一说隐式Intent:
隐式Intent:就是只在Intent中设置要进行的动作,可以用setAction()和setData()来填入要执行的动作和数据,然后再用startActivity()启动合适的程序。
此外:如果手机中有多个适合的程序,还会弹出列表供用户选择(假如你手机有两个浏览器,你打开一个连接,这是系统就会弹出两个浏览器列表供你选择)
在此举个使用隐式Intent打开activity的快速拨号例子:
xml布局文件代码如下:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:layout_gravity="center"
tools:context="com.hs.example.exampleapplication.IntentFirst"> <Button //简单做一个Button组件
android:id="@+id/btn_call"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorPrimaryLight"
android:textSize="18dp"
android:textColor="#FFFFFF"
android:text="打电话到10086"
android:onClick="onClick"/> //点击button是执行onClick方法,onClick方法在MainActivity中创建 </LinearLayout>
我们打电话需要在AndroidManifest.xml中加入静态申请的权限:
但是Android 6.0之后,仅仅是在配置文件中获取权限是没有相应权限的,还有通过动态来获取权限,在下面的MainActivity.java中有说到
<uses-permission android:name="android.permission.CALL_PHONE"/>
MainActivity.java代码如下:
 public class IntentFirst extends AppCompatActivity {
     private static final int REQUEST_EXTERNAL_STORAGE = ;
     private static String[] PERMISSIONS_STORAGE = {"android.permission.CALL_PHONE"};//要获取的权限,可以获取多个
   //此方法用于动态获取打电话权限
     public static void getCallPermissions(Activity activity) {
         try {
             //检测是否有呼叫的权限
             int permission = ActivityCompat.checkSelfPermission(activity,"android.permission.CALL_PHONE");
             if (permission != PackageManager.PERMISSION_GRANTED) {
                 // 没有呼叫的权限,去申请权限,会弹出对话框
                 ActivityCompat.requestPermissions(activity, PERMISSIONS_STORAGE, REQUEST_EXTERNAL_STORAGE);
             }
         } catch (Exception e) {
             e.printStackTrace();
         }
     }
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.activity_intent_first);
         getCallPermissions(this);
     }
     public void onClick(View view){
         Intent intent = new Intent();
         intent.setAction(Intent.ACTION_VIEW);
         intent.setData(Uri.parse("tel:10086"));
         startActivity(intent);
     }
 }
运行效果如下:


Android-----Intent中通过startActivity(Intent intent )隐式启动新的Activity的更多相关文章
- Android-----Intent中通过startActivity(Intent intent )显式启动新的Activity
		
Intent:即意图,一般是用来启动新的Activity,按照启动方式分为两类:显式Intent 和 隐式Intent 显示Intent就是直接以“类名称”来指定要启动哪一个Activity:Inte ...
 - Intent显示启动与隐式启动
		
Android的Acitivity启动大致有两种方式:显式启动与隐式启动.下面分别介绍: 1.显示启动: 清单文件注册Activity <activity android:name=" ...
 - Android隐式启动匹配:action,category,data
		
简介 Android开发中,Activity,Service 和 BroadcastReceiver 启动有两种方式,显示启动和隐式启动. 为方便下面描述,我以Activity启动为例. 显示启动便是 ...
 - Android隐式启动Activity可能存在的坑
		
转载本专栏文章,请注明出处,尊重原创 .文章博客地址:道龙的博客 本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 本篇文章,对隐式启动Activity再做分析. 有些人可能会说了, ...
 - (4.19)sql server中的事务模式(隐式事务,显式事务,自动提交事务)
		
(4.19)sql server中的事务模式(隐式事务,显式事务,自动提交事务) 1.概念:隐式事务,显式事务,自动提交事务 2.操作:如何设置事务模式 3.存储过程中的事务 XACT_ABORT 1 ...
 - 显式启动Activity和隐式启动Activity
		
1.显式启动Intent intent = new Intent(this, class);startActivity(intent); 2.隐式启动AndroidManifest.xml中定义某个A ...
 - Android-隐藏app图标以及隐式启动
		
隐藏APP桌面图标 <activity android:name=".LaunchActivity"> <intent-filter> <action ...
 - Activity组件:(一)通过显式意图和隐式意图来实现Activity间的跳转
		
一.通过显式意图来实现Activity间的跳转 显式意图是指在创建Intent对象时就指定接受者组件 /** * 下面是通过显式意图进行跳转,即明确写出要跳转到SecondActivity.class ...
 - ANdroid5.0不能隐式启动service,必须显示,解决办法,加服务端包名
		
Intent intent = new Intent(); intent.setAction("com.viaembedded.veonvif.RemoteService");// ...
 
随机推荐
- Python_字符串连接
			
#join() 与split()相反,join()方法用来将列表中多个字符串进行连接,并在相邻两个字符串之间插入指定字符 li=['apple','peach','banana','pear'] se ...
 - Linux之SSH密钥认证
			
1.SSH协议的认识 SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定:SSH 为建立在应用层基础上的安全协议.SSH 是目前 ...
 - nginx cache的玩法
			
一.简介 Nginx版本从0.7.48开始,支持了类似Squid的缓存功能.这个缓存是把URL及相关组合当做Key,用Md5算法对Key进行哈希,得到硬盘上对应的哈希目录路径,从而将缓存内容保存在 ...
 - 【手记】走近科学之为什么明明实现了IEnumerable<T>的类型却不能调用LINQ扩展方法
			
比如Json.NET的JObject明明实现了IEnumerable<T>,具体来说是IEnumerable<KeyValuePair<string, JToken>&g ...
 - HTTPS 之 TLS 性能调优
			
HTTPS(HTTP over SSL)是以安全为目标的 HTTP 通道,可以理解为 HTTP + SSL/TLS,即在 HTTP 下加入 SSL/TLS 层作为安全基础.其中 TLS 的前身是 SS ...
 - Thymeleaf 3.0  专题
			
http://www.thymeleaf.org/doc/articles/layouts.html thymeleaf的初次使用(带参请求以及调用带参js方法) 之前对于前端框架接触较少,第一次接触 ...
 - spring boot actuator专题
			
spring-boot-starter-actuator模块的实现对于实施微服务的中小团队来说,可以有效地减少监控系统在采集应用指标时的开发量.当然,它也并不是万能的,有时候我们也需要对其做一些简单的 ...
 - Sublime text使用快捷键
			
作者:gyfnice链接:https://www.zhihu.com/question/24896283/answer/34327939来源:知乎著作权归作者所有,转载请联系作者获得授权. 代码片段 ...
 - [python3.5][PyUserInput]模拟鼠标和键盘模拟
			
一.PyUserInput安装 python3.5的PyMouse和PyKeyboard模块都集成到了PyUserInput模块中.在python3.5中,直接安装PyUserInput模块即可 Py ...
 - 模块(相当于Java里的包)
			
Python提供丰富和强大的标准库和第三方库. sys库 在命令窗口中可以输入参数 若想将参数打印出来, 可以这样写: print(sys.argv[2]) os库 可以创建文件夹. 类似于Java里 ...