根据4.4 SMS API,新版本提供以下功能:
允许应用在设备上读取和写入短信和彩信
我找不到有关此功能的任何信息,也无法找到新SDK中的任何示例.这是我到目前为止读取新传入消息的方法.
但是,我想阅读存储在deivce上的现有消息:
// Can I only listen for incoming SMS, or can I read existing stored SMS?
SmsMessage[] smsList = Telephony.Sms.Intents.getMessagesFromIntent(intent);
for(SmsMessage sms : smsList) {
Log.d("Test", sms.getMessageBody())
}
Run Code Online (Sandbox Code Playgroud)
请注意:我知道使用SMS内容提供商,但不支持此方法.根据链接的API,我应该能够以受支持的方式执行此操作.
我最近更新了我的应用程序,以支持android 6 marshmallow.我按照https://developer.android.com/training/permissions/requesting.html上的说明进行操作
并为Manifest.permission.RECEIVE_SMS添加了requestPermissions.当我运行以下代码时:
Log.i(TAG, "sending SMS...");
Intent intent = new Intent("android.provider.Telephony.SMS_RECEIVED");
intent.putExtra("pdus", data);
getContext().sendOrderedBroadcast(intent, null);
Run Code Online (Sandbox Code Playgroud)
我明白了
java.lang.SecurityException:Permission Denial:不允许从pid = 1999发送广播android.provider.Telephony.SMS_RECEIVED,uid = 10056
即使我授予SMS_RECEIVED权限,我也无法在设备上发送短信广播.
任何想法为什么我在Android 6上获得此安全异常.
我的目标是在我的设备链接中生成假短信[ 我可以发送"短信接收意图"吗? .我没有在谷歌上发现任何提及它不再允许.
我正在尝试通过使用这种方法来读取短信。但是我的应用程序未读取Message。
我尝试过的代码。
权限:
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.SEND_SMS" />
Run Code Online (Sandbox Code Playgroud)
活动(主要代码):
class OtpActivity : AppCompatActivity(), View.OnClickListener {
private var smsVerifyCatcher: SmsVerifyCatcher? = null
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_otp)
smsVerifyCatcher = SmsVerifyCatcher(this, OnSmsCatchListener { message ->
val code = parseCode(message)//Parse verification code
Log.e("Code", code)
//then you can send verification code to server
})
smsVerifyCatcher!!.setPhoneNumberFilter("0902249") // I passed 10 digit number here
smsVerifyCatcher!!.setFilter("Ashish") // For extra i added Filter for name
}
private fun parseCode(message: String): …Run Code Online (Sandbox Code Playgroud)