2014-01-29 2 views
7

У меня есть сомнение в открытии моего приложения через почтовые ящики sms (исходит из определенного числа), возможно ли это ??? пожалуйста, направляйте меня или дайте несколько советов, чтобы выйти из проблемы.Можно ли открыть приложение через почтовые ящики sms?

Я пробовал с Google, но не смог найти подходящее решение.

Заранее спасибо.

ответ

5

Приложение можно открыть из ссылки, содержащейся в СМС.

Создать пристальный фильтр для вашего домена, как это:

<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/... (которые могут быть в SMS) предложит пользователю открыть его с вашим приложением.

+0

Большое спасибо, я попробую .. – Madhu

+1

use <категория android: name = "android.intent.category.BROWSABLE" /> вместо

2

Как правило, вы можете прослушивать входящие sms, а затем просто искать номер, он пришел или это контент, тогда вы можете начать свою желаемую деятельность с помощью намерения.

Код должен быть похож на here. Вам необходимо будет изменить метод onReceive

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?

Надеюсь, это было полезно.

Смежные вопросы