main.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:layout_height="fill_parent" > <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" /> <TextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="inputphonenumber" /> <EditText android:id="@+id/phonenumber" android:layout_width="fill_parent" android:layout_height="wrap_content" android:phoneNumber="true" /> <Button android:id="@+id/btn_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CALL" /> </LinearLayout>
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="test.mft" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <application android:allowBackup="true" android:icon="@drawable/ic_launcher" android:label="@string/app_name" android:theme="@style/AppTheme" > <activity android:name="test.mft.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> </application> <uses-permission android:name="android.permission.CALL_PHONE"></uses-permission> </manifest>
main.java
package test.mft; import android.app.Activity; import android.content.Context; import android.content.Intent; import android.net.Uri; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { /** Called when the activity is first created. */ private Context Tcontext; //hander private final int HANDER_CALL_RETURN = 1; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Tcontext = MainActivity.this; Button btn_call = (Button) findViewById(R.id.btn_call); btn_call.setOnClickListener(new OnClickListener() { public void onClick(View v) { // TODO Auto-generated method stub EditText et_phonenumber = (EditText)findViewById(R.id.phonenumber); String number = et_phonenumber.getText().toString(); Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:"+number)); startActivity(intent); new ToCall(); MainActivity.this.finish(); } }); } class ToCall { public ToCall() { // TODO Auto-generated constructor stub new Thread(){ @Override public void run() { // TODO Auto-generated method stub try { sleep(5000); Message message = Message.obtain(); message.what = HANDER_CALL_RETURN; hander.sendMessage(message); } catch (Exception e) { e.printStackTrace(); } finally { // 卸载所创建的myDialog对象 } } }.start(); } } Handler hander = new Handler() { public void handleMessage(Message msg) { int handerType = (int) msg.what; switch (handerType) { case HANDER_CALL_RETURN: Toast.makeText(Tcontext,"弹出窗口关闭咯", Toast.LENGTH_LONG).show(); Intent intent = new Intent(); intent.setClass(MainActivity.this, MainActivity.class); Tcontext.startActivity(intent); break; default: break; } }; }; }
相关推荐
在安卓应用开发中,实现多线程断点续传下载和在线播放音乐是两个重要的功能。下面我们将深入探讨这两个主题。 一、Android多线程断点续传下载 1. 多线程下载:在传统的单线程下载中,整个文件的下载过程由一个线程...
加载过程中需要注意线程安全,通常推荐在子线程中进行,然后通过`runOnUiThread()`更新UI。 7. **性能测试与优化**: 在实际应用中,GifView的性能至关重要。开发者需要进行性能测试,例如使用Systrace或Traceview...
在Android应用开发中,Activity是用户界面的基本单元,它的生命周期是开发者必须要深入理解的重要概念。这个"Android生命周期的演示程序"旨在帮助我们直观地了解Activity从创建到销毁的各个阶段,以及在不同操作下...
5. 如果同时使用了`startService()`和`bindService()`,Service会在两个生命周期方法间跳转,先执行`onCreate()`和`onStartCommand()`,然后执行`onBind()`。 6. 当`stopService()`或所有绑定的客户端调用`...
9.82、给模拟器打电话发短信 321 9.83、加快模拟器速度 321 9.83.1、模拟器 “尚未注册网络” 322 9.84、EMULATOR命令行参数 322 9.85、如何进行单元测试 323 9.86、ANDROID自动化测试初探 324 9.86.1、捕获Activity...
这一部分旨在帮助初学者快速上手,并逐步熟悉Android开发的基本流程。 **预备知识**: - **搭建开发环境**:确保已安装好Android Studio及相关开发工具。 - **编写“Hello World”程序**:这是熟悉任何编程语言的第...
- **Activity跳转**:通过Intent启动新的Activity,可以在一个Activity中调用`startActivity()`方法,并传入Intent对象。 - **数据传递**:可以在Intent中附加数据,接收端Activity可以通过Intent获取这些数据。 ##...
8. **线程与并发**:AsyncTask、Handler、Looper、Message的理解,以及如何在Android中正确地进行多线程操作,避免UI阻塞。 9. **内存管理**:了解Dalvik和ART虚拟机的工作机制,如何避免内存泄漏,以及使用...
【Android项目手机卫士开发入门】 在Android平台上,开发一款名为“手机卫士”的应用程序是...随着学习的深入,你将接触到更多高级主题,如多线程、异步处理、动画效果、自定义View等,从而提升你的Android开发技能。
2. **Intent**:Intent是Android中用于启动服务、启动或跳转到另一个Activity的主要手段,分为显式Intent和隐式Intent。 3. **Fragment**:Fragment是Android 3.0引入的概念,可以在一个Activity中显示多个界面,...
2. **初始化MediaPlayer**: 在源码中,你需要先创建一个MediaPlayer对象,然后调用`setDataSource()`方法指定音频文件路径,可以是本地文件路径或URL。接着,调用`prepare()`或`prepareAsync()`来预加载媒体文件。`...
在AndroidManifest.xml文件中使用`<receiver>`标签声明BroadcastReceiver,并使用`<intent-filter>`标签指定接收的广播类型。 ### 23. ContentProvider的作用是什么? ContentProvider为应用程序提供了访问数据的...
### Android Training Course in Chinese #### 一、Android入门基础 - **建立第一个App** - 创建Android项目:通过Android Studio等开发工具,选择合适的模板快速搭建Android应用的基础框架。 - 执行Android程序...
8. **多线程与异步处理**:AsyncTask、Handler、Looper、Thread、Runnable等是Android中处理多线程和异步任务的重要工具,它们能帮助开发者解决UI线程阻塞问题。 9. **网络编程**:包括HTTP请求库的使用,如OkHttp...
相比于 Eclipse 版本的 Allocation Tracker,Android Studio 版本提供了更为直观且清晰的界面与功能,使开发者能够更加便捷地监控应用程序中的内存分配细节。 #### 二、启动 Allocation Tracker 1. **启动追踪**:...
- `addJavascriptInterface()`: 创建一个Java对象并将其暴露给JavaScript环境,使JavaScript可以通过特定对象调用Android的方法。 - `WebViewClient`的`shouldOverrideUrlLoading()`: 控制页面链接的打开方式,...
- **避免不必要的对象创建**:例如,在循环中避免频繁调用`ArrayList.size()`,而是先获取其大小并存储在一个局部变量中使用。 - **合理使用缓存机制**:利用软引用(SoftReference)和弱引用(WeakReference),...
在Android游戏开发中,主角移动与地图平滑滚动是实现流畅游戏体验的关键技术。这一过程涉及到许多编程概念和技术,包括视口管理、坐标系统转换、帧率优化等。以下是关于这个主题的详细解释: 1. **视口管理...
- **通过SQLiteOpenHelper获取**:通过继承SQLiteOpenHelper并重写其方法,然后调用`getWritableDatabase()`或`getReadableDatabase()`方法获取SQLiteDatabase实例。 - **获取方法**: - `getWritableDatabase()`:...
6. **API接口**:源码中应包含对外的API接口,使得开发者可以方便地在自己的应用中调用PDF阅读器的功能,例如打开指定的PDF文件、跳转到特定页码等。 在学习和研究AndroidPdfViewer源码时,开发者可以从以下几个...