2017-10-25 7 views
-2

edittextで指定した電話番号に電話する必要があります。しかし、番号を入力した後にコールボタンを押すと応答はありません。アンドロイドスタジオのボタンの助けを借りて、edittextに記載されている電話番号を呼び出すにはどうすればいいですか?

番号をedittextに入力した後に私の電話ボタンを押すとすぐに私のアプリから直接発信者ウィンドウを起動する必要があります。私を助けてください、お友達。また、私のコードで何が間違っているか教えてください。

このたびはお時間を頂き、誠にありがとうございます。

import android.Manifest; 
import android.app.Activity; 
import android.content.Intent; 
import android.content.pm.PackageManager; 
import android.net.Uri; 
import android.os.Bundle; 
import android.support.v4.app.ActivityCompat; 

import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 



public class MainActivity extends Activity { 
    EditText number; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     Button mDialButton = (Button) findViewById(R.id.btn_dial); 

     mDialButton.setOnClickListener(new OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       callNumber(); 
      } 
     }); 
    } 

    private String getPhoneNumber() { 
     number = (EditText) findViewById(R.id.number); 
     return number.getText().toString(); 

    } 

    private void callNumber() { 
     Intent call = new Intent(Intent.ACTION_CALL); 
     call.setData(Uri.parse("tel:" + getPhoneNumber())); 
     if (ActivityCompat.checkSelfPermission(this, Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
      // TODO: Consider calling 
      // ActivityCompat#requestPermissions 
      // here to request the missing permissions, and then overriding 
      // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
      //           int[] grantResults) 
      // to handle the case where the user grants the permission. See the documentation 
      // for ActivityCompat#requestPermissions for more details. 
      return; 
     } 
     startActivity(call); 
    } 
} 

のAndroidManifest.xml:

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="arun.com.phonecall"> 
    <uses-permission android:name="android.permission.CALL_PHONE"/> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:roundIcon="@mipmap/ic_launcher_round" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    </application> 

</manifest> 

答えて

1

アクセス許可を要求していない

は、ここに私のコード

MainActivity.javaです。すでに権限を持っていない場合は、直接返さずにリクエストする必要があります。

私のライブラリを使用すると、実行時のアクセス許可を簡単に処理できます。確認

1

の許可を正しく求められていないため、(あなたのコードから)アクセス権に関する問題が発生している可能性があります。Requesting Permissions at Run Timeの許可を求めてください。 Manifest.permission.CALL_PHONEため

Intent intent = new Intent(Intent.ACTION_DIAL, 
         Uri.fromParts("tel", getPhoneNumber(), null)); 
0
  Intent call = new Intent(Intent.ACTION_CALL); 
      call .setData(Uri.parse("tel:" + getPhoneNumber())); 
      call .setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      if (ActivityCompat.checkSelfPermission(this, 
      Manifest.permission.CALL_PHONE) != 
      PackageManager.PERMISSION_GRANTED) { 
       // TODO: Consider calling 
       // ActivityCompat#requestPermissions 
       // here to request the missing permissions, and then overriding 
       // public void onRequestPermissionsResult(int requestCode, String[] permissions, 
       //           int[] grantResults) 
       // to handle the case where the user grants the permission. See the documentation 
       // for ActivityCompat#requestPermissions for more details. 
       return; 
      } 
      startActivity(call); 
0

最初のチェック実行時のアクセス許可と、あなたはこの

 Intent intent = new Intent(Intent.ACTION_DIAL); 
     intent.setData(Uri.parse("tel:" + getPhoneNumber())); 
     startActivity(intent); 
のように呼び出すことができます:あなたが許可を得てビジネスをしたくない場合は、 ACTION_DIALを使用することができます

1

このコードを試してください

public class MainActivity extends AppCompatActivity { 

EditText number; 
int REQUEST_PHONE_CALL = 1000; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button mDialButton = (Button) findViewById(R.id.btn_dial); 

    mDialButton.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      callNumber(); 
     } 
    }); 
} 

private String getPhoneNumber() { 
    number = (EditText) findViewById(R.id.number); 
    return number.getText().toString(); 

} 

private void callNumber() { 
    Intent call = new Intent(Intent.ACTION_CALL); 
    call.setData(Uri.parse("tel:" + getPhoneNumber())); 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M 
      && checkSelfPermission(
      Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 

     requestPermissions(
       new String[]{ 
         Manifest.permission.CALL_PHONE}, 
       REQUEST_PHONE_CALL); 
    } 
    else 
    { 
     startActivity(call); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode) { 
     case 1000: 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       Intent call = new Intent(Intent.ACTION_CALL); 
       call.setData(Uri.parse("tel:" + getPhoneNumber())); 
       startActivity(call); 
      } else { 
       Toast.makeText(MainActivity.this, "Permission is denied", Toast.LENGTH_SHORT).show(); 
      } 
      break; 

    } 

} 



} 
+0

ありがとうございました..働いています.... – Da1

+1

@ reshma-dhaduk、あなたの答えにいくつかの説明を加えてください。それは他のユーザーに役立つでしょう。 –

+0

@ Da1あなたが助けてくれたら、Reshmaの答えを受け入れてください。 –

関連する問題