我正在尝试创建一个应用程序,当一个电话来到手机我想要检测数字.以下是我尝试过的,但它没有检测来电.
我想MainActivity在后台运行,我该怎么做?
我已经在manifest档案中给予了许可.
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)
我应该在清单中提供其他任何东西吗?
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.test_layout);
}
public class myPhoneStateChangeListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
super.onCallStateChanged(state, incomingNumber);
if (state == TelephonyManager.CALL_STATE_RINGING) {
String phoneNumber = incomingNumber;
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 我想在android中获取传出呼叫的位置和时间和日期.我正在使用一个广播接收器来检测新的传出呼叫,在广播接收器中我正在启动一个可以实现位置接收器的服务,用于获取每个新的拨出呼叫的当前位置,它将触发.
我的问题是:
广播接收器
public class OutGoingCallReceiver extends BroadcastReceiver {
public static String phoneNumber;
@Override
public void onReceive(Context context, Intent intent) {
String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);
if (state == null) {
phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
Intent serviceIntent = new Intent(context, NarenService.class);
context.startService(serviceIntent);
Toast.makeText(context, "Calling..to " + phoneNumber, Toast.LENGTH_SHORT).show();
}
}
}
Run Code Online (Sandbox Code Playgroud)
服务
public class NarenService extends Service implements LocationListener {
SQLiteDatabase db;
double lat, lon;
LocationManager locationManager;
String provider;
DataProvider dataProvider;
Cursor cursor;
private static final String TAG = "NarenService";
@Override …Run Code Online (Sandbox Code Playgroud) android ×2