восстановить номер вызова в моем приложении для Android - PullRequest
0 голосов
/ 26 декабря 2010

Я хотел бы получить номер вызова, когда я получаю вызов в моем приложении. Я хотел бы получить его и сохранить его где-нибудь.

public void onCallStateChanged(int state, String incomingNumber) {
    super.onCallStateChanged(state, incomingNumber);

......... * * 1004

Входящий номер ничего не содержит.

Ответы [ 2 ]

0 голосов
/ 26 декабря 2010

Включите следующие разрешения в манифест вашего приложения как дочерний элемент application.

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

Также включите получатель в манифест

<!-- SAMPLE APPLICATION IS NAME OF OUR APPLICATION -->
<receiver android:name="SampleApplication" 
    android:enabled="true"
    android:exported="true"
    android:permission="">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />
        <category android:name="android.intent.category.LAUNCHER" />
        <action android:name="android.intent.action.PHONE_STATE" />
    </intent-filter>

</receiver>

Создайте класс, который расширяет android.telephony.PhoneStateListenerи реализуйте его onCallStateChanged

public class 
class MyPhoneStateListener extends PhoneStateListener
  {
      public void onCallStateChanged(int state, String incomingNumber)
      {
          Log.d("SampleApp","Incoming call from: "+incomingNumber);
      }
  }

Теперь у вас onCreate () вызовите TelephonyManager и добавьте этот класс в качестве слушателя:

TelephonyManager myTelManager = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
MyPhoneStateListener myListner = new MyPhoneStateListener();
myTelManager.listen(myListner, PhoneStateListener.LISTEN_CALL_STATE);

Вы можете проверить результат в LogCat.

РЕДАКТИРОВАТЬ: завершить класс, который хранит ответ в переменной:

import android.app.Activity;
import android.os.Bundle;
import android.telephony.PhoneStateListener;
import android.telephony.TelephonyManager;

public class SampleApp extends Activity{

private String incomingCallNumber="";
@Override
public void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState); 
    setContentView(R.layout.rating);
    TelephonyManager myTelManager = 
(TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
    MyPhoneStateListener myListner = new MyPhoneStateListener();
    myTelManager.listen(myListner, PhoneStateListener.LISTEN_CALL_STATE);


}
class MyPhoneStateListener extends PhoneStateListener
{
  public void onCallStateChanged(int state, String incomingNumber)
  {
     SampleApp.this.incomingCallNumber=incomingNumber;
  }
}

}
0 голосов
/ 26 декабря 2010

У вас есть разрешения?

Обратите внимание, что доступ к некоторой информации телефонии защищен разрешениями.Ваше приложение не будет получать обновления для защищенной информации, если оно не имеет соответствующих разрешений, объявленных в файле манифеста.Там, где применяются разрешения, они отмечены соответствующими флагами LISTEN_.

http://developer.android.com/reference/android/telephony/PhoneStateListener.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...