2017-01-27 9 views
-5

アプリから電話をかけているときに機能していません。私はアンドロイドマニフェストでパーミッションを追加しましたが、まだ動作していません。私のコードを見て、すぐに私を助けてください。アンドロイドアプリで通話が行われていませんか?

button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
     Intent callIntent = new Intent(Intent.ACTION_CALL); 
     callIntent.setData(Uri.parse("tel:999999999")); 

     if (ActivityCompat.checkSelfPermission(menu.this, 
       Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
      return; 
     } 

     startActivity(callIntent); 
    } 
}); 
+0

ようこそスタックオーバーフロー!あなたに素晴らしい答えを与えるために、もしあなたがまだ持っていなければ、あなたが[尋ねる]を一目で把握すれば、私たちを助けるかもしれません。あなたが[mcve]を提供できるなら、それは役に立つかもしれません。 – Mat

+0

を参照してくださいhttp://stackoverflow.com/questions/1556987/how-to-make-a-phone-call-in-android-and-come-back-to-my-activity-when-the-all-i for別の方法 – Redman

+0

マニフェストファイル –

答えて

0

このコードは動作するはずです:マニフェストで

Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + "Your Phone_number")); 
    startActivity(intent); 

権限:

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

をしかし、私は非常に代わりACTION_DIALを使用することをお勧めします。代わりに入力された番号でダイヤラ画面が開きます。これにより、ユーザーはより柔軟に対応できます。また、CALL_PHONE権限を持つ必要はありません。ここで

はアップデートです:

メインクラス

CALL_PHONEの許可を得て

public class MainActivity extends AppCompatActivity { 

private final int CALL_PHONE = 1; 
private Button dialBtn; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    dialBtn = (Button) findViewById(R.id.dial_button); 
    //In android 6 we need to ask for permissions: 
    if (ActivityCompat.checkSelfPermission(getApplicationContext(), 
      Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { 
      requestPermissions(new String[]{Manifest.permission.CALL_PHONE}, CALL_PHONE); 
     } else { 
      Toast.makeText(getApplicationContext(), "We need permissions to dial.", Toast.LENGTH_LONG).show(); 
     } 
    } else { 
     setupView(); 
    } 
} 

private void setupView() { 
    dialBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent callIntent = new Intent(Intent.ACTION_CALL); 
      callIntent.setData(Uri.parse("tel:999999999")); 
      // We have to implement this part because ... yeah permissions in android..... 
      if (ActivityCompat.checkSelfPermission(getApplicationContext(), Manifest.permission.CALL_PHONE) != PackageManager.PERMISSION_GRANTED) { 
       Toast.makeText(getApplicationContext(), "We need permissions to dial.", Toast.LENGTH_LONG).show(); 
       return; 
      } 
      startActivity(callIntent); 
     } 
    }); 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    switch (requestCode) { 
     case CALL_PHONE: 
      if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       setupView(); 
      } else { 
       Toast.makeText(getApplicationContext(), "We need permissions to dial.", Toast.LENGTH_LONG).show(); 
      } 
      break; 
    } 
} 

私のマニフェスト:

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

<application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    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> 

パーミッションチェックなしと最後のものだけが、そんなに簡単であるACTION_DIAL

public class MainActivity extends AppCompatActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button dialBtn = (Button) findViewById(R.id.dial_button); 
    dialBtn.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Intent callIntent = new Intent(Intent.ACTION_DIAL); 
      callIntent.setData(Uri.parse("tel:999999999")); 
      startActivity(callIntent); 
     } 
    }); 
} 
} 

を使用。 Androidの許可のチェックは、お尻の痛みです。

私は自分のクラスを作りました。次回はStack Stackトレースを提供する方が簡単です。しかし、私があなたのコードで見ることができるのはあなたが使用していることですmenu.this私は十分な情報を提供していないので、私は確かにわかりませんが、これはエラーを引き起こすと思います。

私は私が助けてくれることを願っています。

+0

のアプリケーションタグの前にあなたの通話許可タグがあるかどうかを確認してください。もう一度やり直してください...電話をかけているときにポップアップが表示されます。 "残念なことに、 –

+0

plz私の助けを借りて –

+0

@VishalSharma更新を見てください –

関連する問題