显式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);
}
}

运行效果如下:

最新文章

  1. css+js定位到屏幕中间
  2. 读书笔记——Windows环境下32位汇编语言程序设计(9)ANSII字符大小写转大写
  3. 【iOS 初见】第一个简单的 iOS 应用
  4. 在3D Max中查看模型引用的贴图
  5. Java 集合深入理解(11):LinkedList
  6. PPT图片快速编辑技巧
  7. javascript、jsp
  8. excel 下载
  9. Linux系统基础命令
  10. Statement和PreparedStatement的区别; 什么是SQL注入,怎么防止SQL注入? (转)
  11. Android面试经验2
  12. POJ 2195Going Home(网络流之最小费用流)
  13. MySQL的奇怪的删表数据文件而表照样能打开
  14. REST API设计指导——译自Microsoft REST API Guidelines(二)
  15. SQLServer删除数据
  16. Day033--Python--进程
  17. HDOJ 1393 Weird Clock(明确题意就简单了)
  18. 25.mysql中的常用工具
  19. Android自定义控件实战——仿淘宝商品浏览界面
  20. Webpack笔记(三)——一款破产版脚手架的开发

热门文章

  1. python_日历
  2. 微信小程序-统一下单、微信支付(Java后台)
  3. Java 8系列之重新认识HashMap
  4. oracle的事务级别
  5. 实验效果展示(会声会影+FSCapture)
  6. Spring Boot 使用 Log4j2
  7. Python 文件读写的三种模式和区别
  8. BZOJ_1858_[Scoi2010]序列操作_线段树
  9. CentOS7 编译安装Nginx+php并配置php-fpm模块
  10. k8s编排最佳实践