web-dev-qa-db-ja.com

ボタンをクリックして電話をかける

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 }

この問題を解決するにはどうすればよいですか?

48
prasad.gai

マニフェストファイルで許可を与えましたか

 <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);

問題を見つけたら教えてください。

132
Shaista Naaz

呼び出し/呼び出しを開始するには、ACTION_CALLとACTION_DIALの2つの意図があります。

ACTION_DIALは入力されたdialer with the numberのみを開きますが、ユーザーは実際にcall 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> 
14
Xar E Ahmer

文字列をString phno="tel:10digits";に変更して、再試行してください。

12
Harshad

上記のどれもうまくいきませんでした

        Intent i = new Intent(Intent.ACTION_DIAL);
        String p = "tel:" + getString(R.string.phone_number);
        i.setData(Uri.parse(p));
        startActivity(i);
10
kenwen

私もこれでかなりの時間を過ごしていました。追加の許可を超えて、数字を含む文字列に「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);
}
5
JCrooks

「tel:」を番号とともに追加して、インテントにダイヤルし、アクティビティを開始します。

Intent myIntent = new Intent(Intent.ACTION_CALL);
 String phNum = "tel:" + "1234567890";
 myIntent.setData(Uri.parse(phNum));
  startActivity( myIntent ) ;
4
Ashu Singh

コードを1行に収めるには、次を試してください。

startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:123456789")));

適切なマニフェスト許可とともに:

<uses-permission Android:name="Android.permission.CALL_PHONE"></uses-permission>

お役に立てれば!

4
Brian

前に権限を確認してください(Android 6以降):

if (ActivityCompat.checkSelfPermission(context, Manifest.permission.CALL_PHONE) ==
                            PackageManager.PERMISSION_GRANTED) 
   {

     context.startActivity(new Intent(Intent.ACTION_CALL, Uri.parse("tel:09130000000")));
   }
3
javadaskari

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" />
2
X-Black...
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> 
1
RajeshkumarG

また、デバイスでサポートされているテレフォニーも確認してください

private boolean isTelephonyEnabled(){
TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
return tm != null && tm.getSimState()==TelephonyManager.SIM_STATE_READY
}
1
Aristo Michael

許可を得て:

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);
0
Santhosh

私はちょうどAndroid 4.0.2デバイス(GN)で問題を解決しました。このデバイス/バージョンで動作する唯一のバージョンは、CALL_PHONE権限と答えを持つ最初の5つ星に似ていました。 :

Intent callIntent = new Intent(Intent.ACTION_CALL);
callIntent.setData(Uri.parse("tel:123456789"));
startActivity(callIntent);

他のソリューションでは、このデバイス/バージョンでActivityNotFoundExceptionが発生しました。古いバージョンはどうですか?フィードバックはありますか?

0
BossOss