Telephone dialer

来源:https://www.cnblogs.com/lzp123456-/archive/2018/09/15/9651428.html
-Advertisement-
Play Games

運行電話撥號器,需要加這個許可權,否則不會打通電話。這個許可權是用戶許可權,是谷歌工程師為了跟自己撇清關係,用戶需要許可權的時候自己加。 運行android程式的時候提示:ActivityManager: Warning: Activity not started, its current task has ...


運行電話撥號器,需要加這個許可權,否則不會打通電話。這個許可權是用戶許可權,是谷歌工程師為了跟自己撇清關係,用戶需要許可權的時候自己加。

運行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 }

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 使用閃回技術,實現基於磁碟上閃回恢復區的自動備份與還原。 一、恢復表對象 1.創建學生表 2.添加記錄 3.刪除表 4.資料庫回收站多一條新的記錄 二、找回表數據 1.按某條件刪除表記錄,例如 2.如果是刪了或修改裡面的數據,可以先建立一個快表將刪除修改之前狀態的數據找回到這個表中 3.QUICK_ ...
  • SQL語句沒寫好可能導致: 1)網速不給力,不穩定。 2)伺服器記憶體不夠,或者SQL 被分配的記憶體不夠。 3)sql語句設計不合理 4)沒有相應的索引,索引不合理 5)沒有有效的索引視圖 6)表數據過大沒有有效的分區設計 7)資料庫設計太2,存在大量的數據冗餘 8)索引列上缺少相應的統計信息,或者統 ...
  • 1、xcall.sh 批量命令腳本,例:xcall.sh jps ,查看hadoop101~ hadoop104的jps進程 2、xsync.sh 集群同步文件,分發文件腳本,例:xsync.sh /usr/loacl/test.sh,在hadoop101~hadoop104上的/usr/local ...
  • 一般使用dp,不使用px。sp啥時候用呢?給TextView設置文字大小的時候用。 ...
  • 線性佈局: 相對佈局: ...
  • 第一種:內部類的方式 第二種:匿名內部類 第三種按鈕點擊事件:讓當前類實現onClickListener介面。 第四種按鈕的點擊事件: 如果將click方法中的View v去掉或者方法名不是click都會報異常。 原因是什麼呢? 查看View源碼得知: 查看View源碼裡面的onClick屬性: 里 ...
  • 自古開篇先說兩句,寫這些筆記不是學慣用的,主要是後續分享一些遇到的坑,碰到過什麼樣的問題,怎麼去解決,如果你不是一個很耐心無看文章的人,建議去 網易雲課堂找一些課程,跟著別人的腳步或許會更有動力,我的筆記也是從哪裡學習,記一些小筆記,我覺得大學里做這件事是最合適的了,當然最重要的是有沒有興趣,如果沒 ...
  • 新博客地址 http://wossoneri.github.io/2018/09/15/[Android][Framework]create system service/ 做系統開發,有時候需要自己定義一些介面供App使用, 同時為了方便維護管理,就會需要自己建立一個服務,把新的功能集中在一起。下 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...