问题描述
实际上,我正在开发一项功能,我想将每条传入的消息转发到我的设备,转发到另一个号码。但问题是,当应用程序运行时,它会前进,但是当我从最近的应用程序中将其滑出时。那么它不会。
Android 清单权限
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
我的清单中的接收器
<receiver
android:name=".SMSForwarder"
android:permission="android.permission.broADCAST_SMS"
android:enabled="true"
android:exported="true">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
</intent-filter>
</receiver>
MainActivity.java
public class MainActivity extends AppCompatActivity {
private static final int MY_PERMISSIONS_REQUEST_SEND_SMS = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (!checkForSmsPermission()) {
requestPermission();
}
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.P) {
RoleManager roleManager = getSystemService(RoleManager.class);
startActivityForResult(roleManager.createRequestRoleIntent(RoleManager.ROLE_SMS),12);
} else {
Intent intent = new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);
intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,getPackageName());
startActivity(intent);
}
}
/**
* This method checks for permission for SMS
* @return true/false
*/
private boolean checkForSmsPermission() {
if (ActivityCompat.checkSelfPermission(this,Manifest.permission.SEND_SMS) !=
PackageManager.PERMISSION_GRANTED) {
Log.d("warning","Permission not granted");
return false;
} else {
Log.d("warning","Permission granted");
return true;
}
}
/**
*This method requests permission for SMS
*/
private void requestPermission() {
ActivityCompat.requestPermissions(this,new String[]{Manifest.permission.SEND_SMS},MY_PERMISSIONS_REQUEST_SEND_SMS);
}
}
SMSForwader.java
public class SMSForwarder extends broadcastReceiver {
@Override
public void onReceive(Context context,Intent intent) {
if (intent.getAction().equals(Telephony.Sms.Intents.SMS_RECEIVED_ACTION)) {
Intent service = new Intent(context,MybrodcastRecieverService.class);
context.startService(service);
String number = "+923001234567"; // number,where msgs will be forwarded.
Bundle bundle = intent.getExtras();
if (bundle.containsKey("pdus")) {
// here we build a dict where keys are message senders
// all pdu messages from one sender are combined to one long string
Map<String,String> messages = new HashMap<String,String>();
Object[] pdus = (Object[]) bundle.get("pdus");
for (Object pdu: pdus) {
SmsMessage msg = SmsMessage.createFromPdu((byte[])pdu);
String sender = msg.getoriginatingAddress();
String text = msg.getMessageBody();
if (messages.containsKey(sender)) {
String newText = messages.get(sender) + text;
messages.put(sender,newText);
} else {
messages.put(sender,text);
}
}
// every message in a dict is checked against filters
// and is forwarded if it matches
for (String sender: messages.keySet()) {
String message = messages.get(sender);
// also seems to work with single-part messages
String toSend = "From"+sender + ": " + message;
ArrayList<String> dividedMessage = SmsManager.getDefault().divideMessage(toSend);
SmsManager.getDefault()
.sendMultipartTextMessage(number,null,dividedMessage,null);
}
}
}
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)