获取权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>
MainActivity.java
public class CallActivity extends AppCompatActivity {
private EditText etIpNumber;
private Button btnSave;
private SharedPreferences sp;
private static String[] OUTGOING_CALLS = {
Manifest.permission.PROCESS_OUTGOING_CALLS,
};
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_call);
etIpNumber = findViewById(R.id.et_ip_number);
btnSave = findViewById(R.id.btn_save);
sp = getSharedPreferences("config",MODE_PRIVATE);
etIpNumber.setText(sp.getString("ipnumber", ""));
btnSave.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isHasPermission = checkPermissionAllGranted(OUTGOING_CALLS);
if (isHasPermission){
String ipNumber = etIpNumber.getText().toString();
SharedPreferences.Editor editor = sp.edit();
editor.putString("ipnumber", ipNumber);
editor.commit();
Toast.makeText(CallActivity.this, "保存成功", Toast.LENGTH_LONG).show();
}else {
ActivityCompat.requestPermissions(CallActivity.this, OUTGOING_CALLS, 100);
}
}
});
}
private boolean checkPermissionAllGranted(String[] permissions) {
for (String permission : permissions) {
if (ContextCompat.checkSelfPermission(this, permission) != PackageManager.PERMISSION_GRANTED) {
return false;
}
}
return true;
}
}
广播接收者
public class OutCallReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
//获取拨打的号码
String number = getResultData();
//获取config数据里面的数据
SharedPreferences sp = context.getSharedPreferences("config", context.MODE_PRIVATE);
String ipnumber = sp.getString("ipnumber", "");
//修改号码并返回
String newNumber = ipnumber + number;
setResultData(newNumber);
}
}
<receiver android:name=".broadcast.sample.OutCallReceiver">
<intent-filter>
<action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>
</intent-filter>
</receiver>