我想在我的Android应用程序中自动删除某些SMS.因此,我有一种方法可以完全按照我的意愿行事.但是,它仅在我将应用程序从Eclipse直接部署到我的手机时才有效.然后它删除传入的短信.但是,如果从市场下载应用程序,则无效.但也没有错误.有人知道我如何解决这个问题,或者这只能在root设备上运行吗?
public void deleteSMS(Context context, String message, String number) {
try {
mLogger.logInfo("Deleting SMS from inbox");
Uri uriSms = Uri.parse("content://sms/inbox");
Cursor c = context.getContentResolver().query(uriSms,
new String[] { "_id", "thread_id", "address",
"person", "date", "body" }, null, null, null);
if (c != null && c.moveToFirst()) {
do {
long id = c.getLong(0);
long threadId = c.getLong(1);
String address = c.getString(2);
String body = c.getString(5);
if (message.equals(body) && address.equals(number)) {
mLogger.logInfo("Deleting SMS with id: " + threadId);
context.getContentResolver().delete(
Uri.parse("content://sms/" + id), null, null); …Run Code Online (Sandbox Code Playgroud) 如何阅读特定发件人发给我的所有短信?例如,我想扫描a)身体,以及b)来自"TM-MYAMEX"的所有短信到手机的日期/时间.
一些网站似乎表明这可以从"content:// sms/inbox"中读取.我无法弄明白具体如何.还不确定大多数手机是否支持它.我正在使用Galaxy S2.
我正在尝试从收件箱中读取邮件并将其显示在活动中.我的活动包含一个按钮和列表视图.单击该按钮时,将显示收件箱中的所有消息.但我的要求是我需要查看来自特定号码的消息.当我点击单击按钮时,只有特定消息(与特定号码相关联)必须更新时,我的应用程序才会运行.这是相关的代码.
myActivity.java:
public class SecureMessagesActivity extends Activity implements OnClickListener, OnItemClickListener {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setTheme( android.R.style.Theme_Light );
setContentView(R.layout.main);
this.findViewById( R.id.UpdateList ).setOnClickListener( this );
}
ArrayList<String> smsList = new ArrayList<String>();
public void onItemClick( AdapterView<?> parent, View view, int pos, long id ) {
try {
String[] splitted = smsList.get( pos ).split("\n");
String sender = splitted[0];
String encryptedData = "";
for ( int i = 1; i < splitted.length; ++i ) {
encryptedData += splitted[i];
}
String data = …Run Code Online (Sandbox Code Playgroud) 是否有可能在实际发送之前拦截外发短信,获取其内容然后根据某些标准忽略/发送?
例如.阻止所有国际文本(带前导00的数字),但允许其他所有内容.
我想创建一个应用程序,当SMS到达并处理该SMS时收到通知,但是读取createFromPdu函数的引用,它声明:
这个方法很快就会被弃用,所有通过处理SMS_RECEIVED_ACTION广播意图来处理传入SMS消息的应用程序现在必须将新格式String extra从intent传递给新方法createFromPdu(byte [],String),这需要额外的格式参数.这是为了在需要同时支持3GPP和3GPP2格式的设备上正确解码PDU所需的,例如双模GSM/CDMA和CDMA/LTE电话.
但是createFromPdu(byte[], String)文档和SDK都缺少该功能.
我该怎么办?我需要支持这些双卡双待手机.
我试图通过让设备向自己发送短信来验证Android设备的电话号码,并自动检查是否已收到短信.我怎样才能做到这一点?
有没有办法使用Web API从ASP.NET网站发送SMS?我知道Web服务,但不知道如何从我的应用程序调用这些服务.
我刚刚收到了Hangouts 2.0的更新,已安装并启用了SMS→ Turn on SMS.现在我的应用程序在Android 4.3下运行,无法再接收短信,即我的BroadcastReceiver for SMS_RECEIVED不再被调用.:-(
只要我Turn on SMS在环聊2.0中禁用,我的应用就可以再次接收SMS_RECEIVED意图.
广播接收器在此类清单中注册
AndroidManifest.xml中
…
<receiver android:name=".SMSReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
…
Run Code Online (Sandbox Code Playgroud)
SMSReceiver.java
public class SMSReceiver extends BroadcastReceiver {
private static final Log LOG = Log.getLog();
@Override
public void onReceive(Context context, Intent intent) {
LOG.d("onReceive");
…
}
}
Run Code Online (Sandbox Code Playgroud)
我已经尝试将接收器的优先级更改为INT_MAX或999,这是intent-filter文档中可能的最高优先级,但没有成功.我知道SMS_RECEIVED意图是有序发送的,高优先级的应用程序有能力中止广播.1但是,Hangouts 2.0似乎不太可能SMS_RECEIVED以高优先级注册接收器并调用abortBroadcast(),因此阻止任何其他应用程序接收意图.
更令我困惑的是,即使将Hangouts 2.0作为默认短信应用,我的Pebble仍然可以接收短信.我想知道Pebble的不同之处是什么?我刚刚注意到,我的Pebble上的传入短信通知不再是Pebble应用程序收到的新短信通知,而是由收到传入短信的环聊引起的"新环聊消息"通知.所以Pebble应用程序也无法接收传入的短信SMS_RECEIVED.
在旁注而且与此问题没有真正关联,因为我仍然在Android 4.3(但我的应用程序针对SDK级别19,Android 4.4以防万一)Google的Android开发者博客文章关于Kitkat中 …
sms ×10
android ×7
api ×1
asp.net ×1
c# ×1
deprecated ×1
hangout ×1
intercept ×1
sms-gateway ×1