Intent的应用
Intent作为四大组件之一,必定功能强大。
Intent初步功能是进行页面跳转,也就是一个Activity跳另一个Activity,这一节内容我们在美团的美食列表中也提过。
具体代码就这几行
Intent intent = new Intent(context, touch_success.class); Bundle bundle = new Bundle(); bundle.putString("id", id); intent.putExtras(bundle); context.startActivity(intent);
其中的context代表当前页面,通常默认MainActivity.class,大概意思可以理解为我要从当前页面跳到另一个页面去啦,这里呢touch_success是早就定义好的Activity组件,它负责显示另一个页面显示。
在全部设置好以后,记住在AndroidManifest里面定义好你要跳转的页面
两个页面之间也同样可以传递消息,看我们呢主程序
protected void onCreate(Bundle savedInstanceState)
里面的Bundle以前一直不知道是有什么用,现在知道是两个Activity页面的消息传参
<activity
android:name="com.example.touchtotouch.touch_success"
android:label="@string/app_name" />
然后你的当前页面默认显示是
<activity android:name="com.example.touchtotouch.MainActivity" android:label="@string/app_name" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity>
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
这几句匪夷所思的语句其实是定义了Activity入口,也就是说刚刚启动程序时首先显示的页面。
现在我们来完成一个较为复杂实例:手机拨号器的制作:
首先主布局文件:
一个编辑框实现输入
一个拨号按键组合
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/LinearLayout2" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@drawable/background" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <EditText android:id="@+id/editText1" android:layout_width="match_parent" android:layout_height="82dp" android:ems="10" android:background="#ffffffff" android:textSize="40sp" android:textStyle="bold" android:textColor="#ff333333" > <requestFocus /> </EditText> <TableLayout android:layout_width="wrap_content" android:layout_height="match_parent" android:layout_weight="0.70" > <TableRow android:id="@+id/TableRow04" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton01" android:layout_width="100dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/a1" android:background="@drawable/button_selector" android:tag="1" /> <ImageButton android:id="@+id/ImageButton02" android:layout_width="100dp" android:layout_height="70dp" android:src="@drawable/a2" android:onClick="digital_click" android:background="@drawable/button_selector" android:tag="2"/> <ImageButton android:id="@+id/ImageButton03" android:layout_width="100dp" android:layout_height="70dp" android:src="@drawable/a3" android:onClick="digital_click" android:background="@drawable/button_selector" android:tag="3" /> </TableRow> <TableRow android:id="@+id/TableRow03" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton4" android:layout_width="100dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/a4" android:background="@drawable/button_selector" android:tag="4" /> <ImageButton android:id="@+id/ImageButton5" android:layout_width="100dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/a5" android:background="@drawable/button_selector" android:tag="5" /> <ImageButton android:id="@+id/ImageButton06" android:layout_width="100dp" android:layout_height="70dp" android:onClick="digital_click" android:src="@drawable/a6" android:background="@drawable/button_selector" android:tag="6"/> </TableRow> <TableRow android:id="@+id/TableRow02" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton10" android:layout_width="100dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/a7" android:tag="7"/> <ImageButton android:id="@+id/ImageButton11" android:layout_width="100dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/a8" android:tag="8" /> <ImageButton android:id="@+id/ImageButton12" android:layout_width="100dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/a9" android:tag="9" /> </TableRow> <TableRow android:id="@+id/TableRow01" android:layout_width="110dp" android:layout_height="wrap_content" > <ImageButton android:id="@+id/ImageButton10" android:layout_width="100dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/a10" android:tag="*"/> <ImageButton android:id="@+id/ImageButton11" android:layout_width="100dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/a11" android:tag="0"/> <ImageButton android:id="@+id/ImageButton12" android:layout_width="100dp" android:layout_height="70dp" android:background="@drawable/button_selector" android:onClick="digital_click" android:src="@drawable/a12" android:tag="#" /> </TableRow> </TableLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" > <ImageButton android:id="@+id/message" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="0.23" android:onClick="addContact" android:background="@drawable/b1" /> <ImageButton android:id="@+id/dialer" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1.17" android:onClick="dial" android:background="@drawable/b2" /> <ImageButton android:id="@+id/delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android:onClick="delete" android:background="@drawable/b3" /> </LinearLayout> </LinearLayout>
大概布局成这样的效果就好:
接下来我们处理按键显示事项
Activity代码:
public class MainActivity extends Activity { EditText textResult;//显示框 StringBuffer currentNum = new StringBuffer();//用于接受输入 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textResult=(EditText)findViewById(R.id.editText1); }
接下来就是每一个数字按键绑定的方法处理,每按一个键,就记录下tag,标签,然后添加到StringBuffer里面
public void digital_click(View view){ ImageButton btnDigital=(ImageButton) view; String text=btnDigital.getTag().toString(); currentNum.append(text); display(); }
显示到编辑框上:
public void display(){ textResult.setText(currentNum.toString()); }
删除功能:
public void delete(View view){ if(currentNum.length()>=1){ currentNum.delete(currentNum.length()-1, currentNum.length()); } if(currentNum.length()==0){ Toast toast=Toast.makeText(this,"请输入号码",100); toast.show(); display(); } textResult.setText(currentNum); }
接下来重头戏:
拨号键绑定方法:
public void dial(View view) { EditText text=(EditText)findViewById(R.id.editText1); String number=text.getText().toString(); if(currentNum.length()==0){ Toast toast=Toast.makeText(this,"请输入号码",100); toast.show(); display(); } else{ Intent intent = new Intent(); intent.setAction(intent.ACTION_CALL);//设置事件跳转到系统默认的拨号页面 intent.setData(Uri.parse("tel:"+number));//传送数据 startActivity(intent);}//方法内部会自动为Intent添加类别: android.intent.category.DEFAULT }
这样,基本大功告成了,接下来就是添加权限问题,心急的同学一定不要忘记这个步骤,一旦忘记,就会出现页面闪退哦
<uses-permission android:name="android.permission.CALL_PHONE"/>
添加打电话权限
效果如图:
到了这里我们已经实现了打电话的功能,但是别忘了,还有一个添加联系人的功能我们还没实现,异曲同工
public void addContact(View view){ Intent it = new Intent(Intent.ACTION_INSERT,Uri.withAppendedPath(Uri.parse("content://com.android.contacts"),"contacts" )); it.setType("vnd.android.cursor.dir/person"); String number = textResult.getText().toString(); it.putExtra(android.provider.ContactsContract.Intents.Insert.SECONDARY_PHONE,number); startActivity(it); }
完成图如下:
Intent的种类,Action之类的你是否开始疑惑了,其中Intent传递的数据一共有7种,这些我们会在下节课一一学习到,我们目标是做出手机出厂时的所有默认程序,完成了这些,你就是一个具备一定Android系统搭建的工程师了,跟着小编一起学习吧,安卓永无止境,你爱的,终究也会爱上你,纵然因它受挫无数,假若无挫,就怕错过。
相关推荐
在IT行业中,手机拨号器的制作是一个常见的应用开发任务,尤其对于移动设备开发者来说,理解拨号器的工作原理和实现方法是至关重要的。这里我们将深入探讨如何制作一个手机拨号器,主要基于提供的标签“源码”和...
电话拨号器是移动设备上常见的一种应用,主要用于模拟传统电话机的功能,让用户能够通过手机界面轻松拨打和接听电话。在Android操作系统中,电话拨号器的实现涉及到多个层次的技术,包括用户界面设计、通话处理机制...
总结来说,"Intent系统拨号"是Android开发中的常见操作,通过Intent可以轻松地调用系统拨号器,提供给用户便捷的拨号功能。理解并熟练运用Intent对于Android开发者来说至关重要,因为它构成了Android应用间通信的...
【安卓电话拨号器】是一款基于安卓操作系统的应用程序,它允许用户通过手机界面轻松地拨打电话。这款应用的核心是其源码,对于开发者而言,它提供了深入理解安卓系统电话功能实现方式的机会。本文将深入探讨这个项目...
这意味着`Intent`对象可以被序列化,并且能够通过实现克隆来轻松地创建新的实例。`Intent`类的主要功能在于提供了一种机制,用于不同应用程序之间或同一应用内部组件之间的数据传递与操作请求。 #### 直接子类:`...
2. `ACTION_DIAL`:这个动作启动电话拨号器,但不会实际拨打电话。示例:`am start -a android.intent.action.DIAL -d tel:10086`。 3. `ACTION_SENDTO`:用于发送短信,需要指定接收方的电话号码。示例:`android....
这会启动系统的拨号器,但不会自动拨打电话。代码示例如下: ```java Intent intent = new Intent(Intent.ACTION_DIAL); intent.setData(Uri.parse("tel:1234567890")); // 替换为要拨打的电话号码 start...
1. **Intent和BroadcastReceiver**: Android应用之间通过Intent进行通信。在自动拨号场景中,我们可以通过创建一个隐式Intent来触发拨号操作。同时,我们可以注册BroadcastReceiver监听特定的事件(如来电、网络...
总结来说,通过Intent和电话拨号的ACTION,我们可以轻松地在Android应用中实现点击按钮拨打电话的功能。在开发过程中,确保正确处理权限问题,以提供良好的用户体验。以上就是关于在Android开发中使用Intent拨打电话...
1. 打电话:使用`TAndroidHelper`的`Dial`方法可以启动拨号器,让用户确认拨打号码。首先确保应用有拨打电话的权限: ```delphi uses Androidapi.JNI.App, Androidapi.Helpers; procedure TForm1.ButtonCallClick...
在隐藏拨号器的实现过程中,开发者需要关注以下几个关键知识点: 1. **权限管理**:在Android中,拨打电话需要获取`<uses-permission android:name="android.permission.CALL_PHONE" />`权限。开发者需要在...
在Android中,我们可以使用`Intent`来调用系统的拨号器应用,让用户拨打指定的电话号码。以下是核心代码: ```java // 创建拨打电话的Intent Intent callIntent = new Intent(Intent.ACTION_DIAL); callIntent....
1. **设置TextView的clickable属性** 在XML布局文件中,可以为TextView设置`android:clickable="true"`属性,这将使TextView变得可点击。例如: ```xml android:id="@+id/phone" android:clickable="true" <!-...
开发者可能会创建一个自定义的拨号器界面,或者简单地调用系统内置的拨号应用。 3. **res**目录:资源文件夹,包含应用的用户界面元素,如布局(layout)、图标(drawable)、字符串(values)等。在这里,可能会有...
前者会直接拨打电话,后者则打开拨号器界面,由用户确认是否拨号。 2. **权限声明**: 在AndroidManifest.xml文件中,我们需要添加拨打电话所需的权限。由于这涉及到用户的隐私,所以必须在Android 6.0及以上版本中...
1. **用户界面设计**:Dumbphone启动器的界面设计需要简洁直观,模仿早期手机的界面布局,可能只有一个主屏幕,上面有拨号盘、联系人列表和信息图标。 2. **功能限制**:开发者需要对Android系统进行深入理解,以...
在Android系统中,可能需要请求PHONE权限,并使用Intent来启动拨号器。 最后,"短信"功能使用户能在应用内部发送和接收短信。这需要与系统的短信服务进行交互,通常需要获取SEND_SMS和RECEIVE_SMS权限,并使用...
- **应用程序层**: 这一层包含了标准的应用程序,如电话拨号器、联系人管理器等。 - **开发工具**: - **Android SDK**: 开发Android应用的基础工具包,包含了模拟器、文档、示例代码等。 - **Android Studio**: ...