Android心得3--撥號器

來源:互聯網
上載者:User

1. 一點小感悟

 這兩天編程天天出現null 指標異常、找不到活動什麼的異常,總之是各種不在編譯執行時報錯的異常,而在編寫出的apk應用程式上報錯,我就納悶了,java好歹還給提個錯,Android總是默默無聞的,這點讓我很鬱悶,雖然Android也有專門控制台輸出給提示各種結果吧。。但是提示的總是一瀉千裡,讓編程者乍一看,丈二和尚摸不著頭腦,經老師的點撥終於悟透了其中的奧妙,在這裡與大家分享一下。看見一大推錯誤不要慌。分析思路為:先從錯誤第一行看起,一般都找“fatal exception:main”(致命的意外),然後看他的下一行:比如一個撥號器裡的錯誤:“android.content.ActivityNotFoundException:no Actiivityfound to handle Intent{act=android,intent.action.All_APPsdat=tel:xxx-xxx-xxxx}”

這就找到了錯誤的根源,看一下他的提示不難發現這是Activity活動沒有被發現的異常,返回原始碼可以找出這一行:Intentintent =new Intent(Intent.ACTION_ALL_APPS,Uri.parse("tel"+et.toString()));不難發現這裡的Intent. .ACTION_ALL_APPS打錯代碼了,撥號器嘛,當然是Intent.ACTION_CALL了,最重要也是最容易被忽略的一個問題是:”tel:”,記住tel後面有冒號,千萬不能忘了加,不加會一直提醒你Activity沒有被建立。所以問題到這裡已經解決。

綜上所述,IT行業考驗的就是一個細心和耐心,大部分人一看編寫的時候沒報錯,就沒有了找錯的耐心了,當你有了找錯的思路,再靜下心來,仔細看看Android控制台提示的錯誤,回頭看一下相應提示行的代碼,問題其實很好解決,不好解決的只有你的心態。

2.通過這幾天的學習,列舉一些Android錯誤:

failed to find provider info forcom.google.settings(未能找到資訊,為com.google.settings供應商)

atdalvik.system.NativeStart.main(Native Method)(本機主要方法)

Unable to get view server version fromdevice emulator-5554(無法獲得視圖伺服器版本從裝置模擬器- 5554)

Unable to get view server protocolversion from device emulator-5554(無法獲得視圖伺服器協議版本從裝置模擬器- 5554)

no Activity found to handle Intent(沒有活動發現處理的意圖)

Unable to load the window list from device emulator-5554(無法載入視窗列表從裝置模擬器- 5554)

3.下面把一個簡單的撥號器代碼寫一下。

下圖為效果圖:

                                

packagecn.csdn.hr.activity;

 

importandroid.app.Activity;

importandroid.content.Intent;

importandroid.net.Uri;

importandroid.os.Bundle;

importandroid.text.Editable;

importandroid.view.View;

importandroid.widget.Button;

importandroid.widget.EditText;

publicclass CallPhoneActivity extends Activity {

   /** Called when the activity is firstcreated. */

   @Override

   public void onCreate(BundlesavedInstanceState) {

      super.onCreate(savedInstanceState);

      // 設定顯示的視圖介面

      setContentView(R.layout.main);

      // 擷取該布局檔案中相應的組件

      Button callPhoneBtn = (Button)findViewById(R.id.callPhoneBtn);

      // 為按鈕註冊點擊事件

callPhoneBtn.setOnClickListener(newView.OnClickListener() {

        @Override

        public void onClick(View v) {

           //擷取輸入框|可編輯框對象,進行撥號設定

           EditText editText = (EditText)findViewById(R.id.editCallPhone);

           // 擷取輸入的電話號碼

           Editable editable =editText.getText();  

           //設定撥號意圖

           Intent intent = newIntent(Intent.ACTION_CALL,Uri.parse("tel:"+editable.toString()));

// “tel:"+editable.toString()”這是固定的格式,撥號設定時必須加上“tel:”首碼;

           //執行意圖

           startActivity(intent);

        }

      });

   }

}

4.布局

LinearLayout(線性布局)、AbsoluteLayout(絕對布局)、RelativeLayout(相對布局)、TableLayout(表格版面配置)、FrameLayout(幀布局) 布局還分為為水平布局(horizontal)和垂直布局(vertical)。 5.開啟Android模擬器時,出現無訊號,拔打電話或發簡訊時,提示“尚未註冊網路”錯誤資訊的解決方案如下。 l      情境一:你的電腦沒有串連上互連網,同時也沒有在區域網路。   解決辦法:右鍵點擊網路位置,選擇"屬性",在網路連接視窗中右鍵點擊"本地串連",選擇"屬性",設定TCP/IP屬性如下:      IP地址:192.168.1.100      子網路遮罩:255.255.255.0      預設閘道:192.168.1.100      首選DNS伺服器:192.168.1.100 l      情境二:你的電腦沒有串連上互連網,但在區域網路。   解決辦法:右鍵點擊網路位置,選擇"屬性",在網路連接視窗中右鍵點擊"本地串連",選擇"屬性",設定TCP/IP屬性如下:      IP地址:設定成你所在區域網路的IP,如:192.168.1.100      子網路遮罩:設定成你所在區域網路的掩碼,如:255.255.255.0      預設閘道:設定成你所在區域網路的網關,一般網關的IP格式為:*.*.*.1,如:192.168.1.1      首選DNS伺服器:設定成你所在區域網路的路由器IP,一般路由器的IP格式為:*.*.*.1,如:192.168.1.1 l      最後一種解決方案是:讓你的電腦串連上互連網。

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.