zoukankan      html  css  js  c++  java
  • Telephone dialer

    运行电话拨号器,需要加这个权限,否则不会打通电话。这个权限是用户权限,是谷歌工程师为了跟自己撇清关系,用户需要权限的时候自己加。

    运行android程序的时候提示:ActivityManager: Warning: Activity not started, its current task has been brought to the front这是因为:

    这个不是Android平台的Bug,而是Android本身就是这样一种处理机制。
    我们在Android平台下,通过返回按钮,或者程序本身的退出操作,去结束一个进程的时候,实际上Android虚拟机未必会将这个进程真正的结束掉,在内存允许的情况下,这个程序会以缓存的形式存在Android虚拟机中。只有在内存不足的情况下时,Android系统会清理长时间不被激活的任务,以为其他程序提供内存。
    Android这样做,是为了你下一次更加快速的启动这个程序。
    所以,出现楼主这种情况,是在你的程序没有发生任何变化,并且内存足够的情况下,会将上一次执行的程序,从缓存Cached状态直接放置到任务栈的顶端,则你的程序又可以继续执行了。

    消除警告解决办法:

    退出虚拟机的程序从新运行一遍。

    电话拨号器代码:

      1 package com.example.phonedialer;
      2 
      3 import android.net.Uri;
      4 import android.os.Bundle;
      5 import android.app.Activity;
      6 import android.content.Intent;
      7 import android.view.Menu;
      8 import android.view.View;
      9 import android.view.View.OnClickListener;
     10 import android.widget.Button;
     11 import android.widget.EditText;
     12 import android.widget.Toast;
     13 
     14 public class MainActivity extends Activity {
     15 
     16     private EditText et_number;
     17 
     18 
     19     @Override
     20     protected void onCreate(Bundle savedInstanceState) {
     21         super.onCreate(savedInstanceState);
     22         //加载一个布局
     23         setContentView(R.layout.activity_main);
     24         //找到我们关心的控件;通过源码得知EditText继承TextView,TextView继承自View,所以可以这样写。
     25         et_number = (EditText) findViewById(R.id.editText1);
     26         
     27         //找到按钮;通过源码得知Button继承自TextView,TextView继承自View,所以可以这样写。
     28         Button btn_call = (Button) findViewById(R.id.button1);
     29         /**
     30          * 方法里面接收的参数是OnClickListener类型,发现它是一个接口类型。
     31          * Interface definition for a callback to be invoked when a view is clicked.
     32          * 定义了一个接口类型,注册了一个回调事件,当一个view被点击的时候走这个回调方法。
     33          */
     34         btn_call.setOnClickListener(new MyClickListener());
     35         /**
     36          * 这里的this(context也就是上下文的意思),代表MainActivity。查看源码可以得知
     37          * MainActivity继承自Context.
     38          */
     39         //Toast.makeText(this, text, duration)
     40         
     41     }
     42     /**
     43      * 定义一个类,去实现按钮需要的接口类型
     44      */
     45     private class MyClickListener implements OnClickListener {
     46 
     47         /**
     48          * Called when a view has been clicked.
     49          * 当按钮已经被点击的时候调用该方法。
     50          */
     51         @Override
     52         public void onClick(View v) {
     53             /**
     54              * 获取EditText控件的文本内容,第一时间想到通过et_number来获取,
     55              * 但是这个变量不是全局变量,获取不到。所以需要将它变成全局变量。
     56              * Return the text the TextView is displaying
     57              * 返回TextView显示的内容。
     58              * Editable android.widget.EditText.getText()
     59              */
     60             String number = et_number.getText().toString().trim();
     61             if("".equals(number)) {
     62                 /**
     63                  * context上下文
     64                  * The method makeText(Context, CharSequence, int) 
     65                  * in the type Toast is not applicable for the arguments (MainActivity.MyClickListener, String, int)
     66                  * 这里的this代表的是MainActivity.MyClickListener,需要的是一个Context,所以编译报错。
     67                  * 通过类名.this可以设置吐司要在哪个Activity显示。LENGTH_SHORT 0  LENGTH_LONG 1
     68                  */
     69                 Toast.makeText(MainActivity.this, "number不能为空", Toast.LENGTH_SHORT).show(); 
     70                 return;
     71             }
     72             //拿到number进行拨打电话.
     73             /**
     74              * 因为拨打电话的代码谷歌工程师已经写好了,所以不需要我们手动写逻辑,我们只需要
     75              * 把它调起来就可以了。意图:Intent
     76              */ 
     77             Intent intent = new Intent();
     78             //设置动作 打电话。
     79             intent.setAction(Intent.ACTION_CALL);
     80             //设置打的数据 uri数据。Uri data
     81             /**
     82              * Url:统一资源定位符 
     83              * Uri:统一资源标识符 自己定义的路径想代表什么就代表什么。
     84              */
     85             intent.setData(Uri.parse("tel:"+number));
     86             //开启意图
     87             startActivity(intent); 
     88             
     89             
     90             
     91         }
     92         
     93     }
     94     
     95 
     96 
     97     @Override
     98     public boolean onCreateOptionsMenu(Menu menu) {
     99         // Inflate the menu; this adds items to the action bar if it is present.
    100         getMenuInflater().inflate(R.menu.main, menu);
    101         return true;
    102     }
    103     
    104 }
  • 相关阅读:
    智联招聘
    我的Linux以及软件配置(长期更新)
    关于Git的笔记
    PHP和HTML表单
    web学习笔记——CSS整理(一)
    新开通博客园
    Thinphp模板替换
    __APP__
    大步前行
    centos 7 添加环境变量
  • 原文地址:https://www.cnblogs.com/lzp123456-/p/9651428.html
Copyright © 2011-2022 走看看