Позвонить по телефону нажмите на кнопку
Я пытаюсь позвонить, когда нажимаю кнопку в android
((Button)findViewById(R.id.button1)).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
String phno="10digits";
Intent i=new Intent(Intent.ACTION_DIAL,Uri.parse(phno));
startActivity(i);
}
});
Но когда я бегу и нажимаю на кнопку, это дает мне ошибку
ERROR/AndroidRuntime(1021): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.CALL dat=9392438004 }
Как я могу решить эту проблему?
Ответы
Ответ 1
Предоставили ли вы разрешение в файле манифеста
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
и внутри вашей деятельности
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:123456789"));
startActivity(callIntent);
Сообщите мне, если вы найдете какую-либо проблему.
Ответ 2
измените строку на String phno="tel:10digits";
и повторите попытку.
Ответ 3
Существует два способа вызова/начала вызова: ACTION_CALL и ACTION_DIAL.
ACTION_DIAL
откроет только заполненный dialer with the number
, но позволяет пользователю фактически c all or reject the call
. ACTION_CALL
немедленно вызовет номер, а потребует дополнительного разрешения.
Поэтому убедитесь, что у вас есть разрешение
uses-permission android:name="android.permission.CALL_PHONE"
в AndroidManifest.xml
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dbm.pkg"
android:versionCode="1"
android:versionName="1.0">
<!-- NOTE! Your uses-permission must be outside the "application" tag
but within the "manifest" tag. -->
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
<!-- Insert your other stuff here -->
</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
Ответ 4
Ничего из вышеперечисленного не было так с небольшим изменением кода, который сделал для меня
Intent i = new Intent(Intent.ACTION_DIAL);
String p = "tel:" + getString(R.string.phone_number);
i.setData(Uri.parse(p));
startActivity(i);
Ответ 5
У меня тоже было время с этим. Я не понимал, что помимо дополнительного разрешения вам нужно добавить "tel:" на строку с номером в ней. Это то, на что похожа моя внешность после того, как она стала функциональной. Надеюсь это поможет.
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_DIAL);
String temp = "tel:" + phone;
intent.setData(Uri.parse(temp));
startActivity(intent);
}
Ответ 6
добавьте "tel:" вместе с номером, который нужно набрать, и начните свою деятельность.
Intent myIntent = new Intent(Intent.ACTION_CALL);
String phNum = "tel:" + "1234567890";
myIntent.setData(Uri.parse(phNum));
startActivity( myIntent ) ;
Ответ 7
Чтобы иметь код в одной строке, попробуйте следующее:
startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:123456789")));
вместе с соответствующим разрешением манифеста:
<uses-permission android:name="android.permission.CALL_PHONE"></uses-permission>
Надеюсь, это поможет!
Ответ 8
Также хорошо проверить, поддерживается ли телефония на устройстве
private boolean isTelephonyEnabled(){
TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
return tm != null && tm.getSimState()==TelephonyManager.SIM_STATE_READY
}
Ответ 9
проверить разрешения до:
if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) ==
PackageManager.PERMISSION_GRANTED)
{
context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:09130000000")));
}
Ответ 10
I hope, this short code is useful for You,
## Java Code ##
startActivity(new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"+txtPhn.getText().toString())));
----------------------------------------------------------------------
Please check Manifest File,(for Uses permission)
## Manifest.xml ##
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package="com.dbm.pkg"
android:versionCode="1"
android:versionName="1.0">
<!-- NOTE! Your uses-permission must be outside the "application" tag
but within the "manifest" tag. -->
## uses-permission for Making Call ##
<uses-permission android:name="android.permission.CALL_PHONE" />
<application
android:icon="@drawable/icon"
android:label="@string/app_name">
<!-- Insert your other stuff here -->
</application>
<uses-sdk android:minSdkVersion="9" />
</manifest>
Ответ 11
Для тех, кто использует AppCompact... Попробуйте это
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import android.net.Uri;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button startBtn = (Button) findViewById(R.id.db);
startBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
makeCall();
}
});
}
protected void makeCall() {
EditText num = (EditText)findViewById(R.id.Dail);
String phone = num.getText().toString();
String d = "tel:" + phone ;
Log.i("Make call", "");
Intent phoneIntent = new Intent(Intent.ACTION_CALL);
phoneIntent.setData(Uri.parse(d));
try {
startActivity(phoneIntent);
finish();
Log.i("Finished making a call", "");
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(this, "Call faild, please try again later.", Toast.LENGTH_SHORT).show();
}
}
}
Затем добавьте это в свой манифест,,
<uses-permission android:name="android.permission.CALL_PHONE" />
Ответ 12
Я только что решил проблему на устройстве Android 4.0.2 (GN), и единственная версия, работающая для этого устройства/версии, была похожа на первую 5-звездочную версию с разрешением CALL_PHONE и ответ:
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:123456789"));
startActivity(callIntent);
С любым другим решением я получил ActivityNotFoundException на этом устройстве/версии.
Как насчет более старых версий? Кто-нибудь даст отзыв?
Ответ 13
С разрешения:
Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:9875432100"));
if (ActivityCompat.checkSelfPermission(yourActivity.this,android.Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(yourActivity.this,
android.Manifest.permission.CALL_PHONE)) {
} else {
ActivityCompat.requestPermissions(yourActivity.this,
new String[]{android.Manifest.permission.CALL_PHONE},
MY_PERMISSIONS_REQUEST_CALL_PHONE);
}
}
startActivity(callIntent);