我怀疑通过收件箱短信打开我的应用程序(来自特定号码),是否可能?请指导我或提出一些问题的提示。
我曾尝试使用谷歌,但无法找到合适的解决方案。
提前致谢。
答案 0 :(得分:5)
您可以通过短信中包含的链接打开您的应用。
为您的域创建一个intent-filter,如下所示:
<activity
android:name="ActivityFromSMS" >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<data
android:host="mydomain.com"
android:scheme="http" />
</intent-filter>
</activity>
然后,点击指向http://mydomain.com/...
的链接(可以在短信中)将提示用户使用您的应用打开它。
答案 1 :(得分:2)
一般情况下,你可以听取输入短信然后只是寻找号码,它来自或它的内容,然后你可以使用意图开始你想要的活动。
代码应该看起来像here。您需要更改onReceive
方法
答案 2 :(得分:0)
首先,您需要为传入的短信创建广播侦听器。在其onReceive方法中,您可以使用以下代码:
try
{
Log.d("In try", "In Try");
new Handler().postDelayed(new Runnable()
{
public void run()
{
Toast.makeText(mycontext, "Number"+incommingNumber, Toast.LENGTH_SHORT).show();
cursor1= db.rawQuery("select phno from List where phno=?" , new String[] {""+incommingNumber} );
if(cursor1.moveToFirst())
{
do{
String pno = cursor1.getString(0);
Toast.makeText(mycontext, "phno: "+pno, Toast.LENGTH_SHORT).show();
Log.d("DB CHEK", "phno: "+pno);
dbHelper_sms = new SQLDatabase(mycontext);
db_sms = dbHelper_sms.getWritableDatabase();
val_sms=new ContentValues();
//Get SMS body
val_sms.put("body",cursor.getString(cursor.getColumnIndex("Body")) );
val_sms.put("phno",incommingNumber);
db_sms.insert("SmsList",null,val_sms);
//Delete SMS from inbox
mycontext.getContentResolver().delete(Uri.parse("content://sms/conversations/"+cursor.getString(cursor.getColumnIndex("thread_id"))), null, null);
//Log.d("Waiting", "Do Nothing");
Toast.makeText(mycontext, "WHITELIST SMS DELETED : "+cursor.getString(cursor.getColumnIndex("Body")), Toast.LENGTH_SHORT).show();
}while(cursor1.moveToNext());
}
}
cursor.close();
cursor1.close();
db.close();
dbHelper.close();
}
}, 2000);
}
catch(Exception e)
{
e.printStackTrace();
}
现在使用上面的代码你可以得到传入短信的正文,你也可以从收件箱中删除它以删除它的踪迹。在你获得身体后,它可以告诉你如何使用它。你想以编程方式打开一个应用程序吗?我建议检查一下:How do I programmatically launch a specific application in Android?
希望这很有用。