新建一個(gè)Android工程,取名為TestCallphone

成都創(chuàng)新互聯(lián)專注于伊吾企業(yè)網(wǎng)站建設(shè),成都響應(yīng)式網(wǎng)站建設(shè)公司,商城建設(shè)。伊吾網(wǎng)站建設(shè)公司,為伊吾等地區(qū)提供建站服務(wù)。全流程按需網(wǎng)站建設(shè),專業(yè)設(shè)計(jì),全程項(xiàng)目跟蹤,成都創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務(wù)
打開res|layout|activity_main.xml
編輯activity_main.xml,添加如下代碼:
Button android:id="@+id/btn_call" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="直接呼叫聯(lián)通客服10010" /
打開MainActivity.java,并編輯,添加如下代碼:
import android.app.Activity;import android.content.Intent;import android.net.Uri;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;
public class MainActivity extends Activity { private Button mCallButton;
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mCallButton = (Button) findViewById(R.id.btn_call); mCallButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(Intent.ACTION_CALL, Uri .parse("tel:10010")); startActivity(intent); } }); }
}
打開AndroidManifest.xml,添加撥打電話的權(quán)限,
uses-permission android:name="android.permission.CALL_PHONE"/
必須添加這條權(quán)限,否則無法撥打電話
6
連接手機(jī),運(yùn)行程序
無權(quán)限版(彈出撥號(hào)界面并自動(dòng)輸入電話號(hào)碼,用戶選擇是否撥號(hào)):
import?android.content.Context;
import?android.content.Intent;
import?android.net.Uri;
public?void?Call(String?Num,Context?c){
if(Num?!=null??Num.length()?0){
Intent?itt=new?Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+Num));
itt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
c.startActivity(itt);
}
}
權(quán)限版(彈出撥號(hào)界面,自動(dòng)輸入電話號(hào)碼并立刻撥號(hào),在部分系統(tǒng)中會(huì)觸發(fā)安全警告):
!---?權(quán)限?---
uses-permission?android:name="android.permission.CALL_PHONE"?/
import?android.content.Context;
import?android.content.Intent;
import?android.net.Uri;
public?void?Call(String?Num,Context?c){
if(Num?!=null??Num.length()?0){
Intent?itt=new?Intent(Intent.ACTION_CALL,Uri.parse("tel:"+Num));
itt.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
c.startActivity(itt);
}
}
很簡(jiǎn)單的,自己給自己打電話是接不通的。
Intent phoneIntent = new Intent(
"android.intent.action.CALL", Uri.parse("tel:"
+ inputStr));
// 啟動(dòng)
startActivity(phoneIntent);
一、布局,拖一個(gè)框用來輸入電話號(hào)碼,一個(gè)按扭撥號(hào)
二、打電話的權(quán)限添加進(jìn)來
uses-permission android:name="android.permission.CALL_PHONE"/
三、寫撥號(hào)的點(diǎn)擊事件
Activity:
public class DialerAction extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button button =(Button)findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener(){
publicvoid onClick(View v) {
EditTexteditText = (EditText)findViewById(R.id.mobile);
Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:"+ editText.getText()));
DialerAction.this.startActivity(intent);
}
});
}
}
四,輸入另一個(gè)模擬器,例如5554 5556之類的號(hào)碼就可以打電話了
在虛擬機(jī)同時(shí)開啟兩部Android,或者在旁邊的電腦開啟。一般電話號(hào)碼就是Android左上角的5465.
1、 用反射調(diào)用 “com.android.internal.telephony.PhoneFactory”,“com.android.internal.telephony.CallManager”,“com.android.internal.telephony.Phone”中的方法。
代碼如下:
public void Call(String number, Context context) {
try {
final Class? phoneFactoryClass = Class.forName("com.android.internal.telephony.PhoneFactory");
Method makeDefaultPhonesMethod = phoneFactoryClass.getDeclaredMethod("makeDefaultPhones", Context.class);
makeDefaultPhonesMethod.invoke(null, context);
Method getDefaultPhone = phoneFactoryClass.getDeclaredMethod("getDefaultPhone");
Object phone = getDefaultPhone.invoke(getDefaultPhone);
final Class? callManagerClass = Class.forName("com.android.internal.telephony.CallManager");
Method getInstanceMethod = callManagerClass.getDeclaredMethod("getInstance");
Object callManager = getInstanceMethod.invoke(getInstanceMethod);
final Class? phoneClass = Class.forName("com.android.internal.telephony.Phone");
Method registerPhoneMethod = callManagerClass.getDeclaredMethod("registerPhone", phoneClass);
registerPhoneMethod.invoke(callManager, phone);
Method maybeGetMethod = callManagerClass.getDeclaredMethod("getDefaultPhone");
Object phone1 = maybeGetMethod.invoke(callManager);
Method dial = phoneClass.getDeclaredMethod("dial", String.class);
dial.invoke(phone1, number);
} catch (ClassNotFoundException e) {
String string = e.getCause().toString();
Log.e("CallTest" ,string);
} catch (Exception e) {
String string = e.getCause().toString();
Log.e("CallTest" ,string);
}
}
2、在manifest中加如下權(quán)限
manifest xmlns:android=""
package="com.example.callphone"
android:sharedUserId="android.uid.system"
android:versionCode="1"
android:versionName="1.0"
uses-permission android:name= "andoird.permission.CALL_PHONE"/
uses-permission android:name= "andoird.permission.CALL_PRIVILEGED"/
uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/
uses-permission android:name="android.permission.CONNECTIVITY_INTERNAL"/
3、將生成的apk用系統(tǒng)簽名,不同的OS有不同的簽名,例如我用的是
java -jar signapk.jar platform.x509.pem platform.pk8 Callphone_unsigned.apk Callphone_signed.apk。其中platform.x509.pem platform.pk8在不同的OS中不同。
備注:用sharedUserId和系統(tǒng)簽名后,程序才有權(quán)限運(yùn)行。同理,程序不能調(diào)試,只能log跟蹤。
當(dāng)前題目:android打電話,手機(jī)打電話app
網(wǎng)頁(yè)地址:http://chinadenli.net/article15/dsecsgi.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制開發(fā)、網(wǎng)站內(nèi)鏈、軟件開發(fā)、外貿(mào)網(wǎng)站建設(shè)、網(wǎng)站建設(shè)、網(wǎng)站維護(hù)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)