2015-01-28 2 views
1

Мое требование - запустить скрытое приложение, когда скрывается секретный код.запускает скрытое приложение, когда набирается секретный код

MainActivity.java

public class MainActivity extends 
     BroadcastReceiver { 

    String dialed_number; 

    @Override 
    public void onReceive(Context context, Intent intent) 
    { 
     dialed_number = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 

     if(dialed_number.equals("*0*1235#")) 
     { 
      Intent appIntent = new Intent(context, MainActivity.class); 
      appIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(appIntent); 
      setResultData(null); 
     } 
    } 

} 

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.tuto.bala.helloworld" > 
    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 
    <application 
     android:allowBackup="true" 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 

     <receiver 
      android:name=".MainActivity"> 
     </receiver> 
    </application> 

</manifest> 

Когда я запустить проект, я получаю следующее исключение: проблема подключения недопустимый MMI код андроида

Может кто-нибудь, пожалуйста, помогите

С уважением,Bala

ответ

0

Я использовал тот же код, который работает, когда нам предоставляется номер набора, это номер, который нельзя включить *, #. и в файле манифеста мы должны объявить приемник, как этот

<receiver android:name=".MainActivity" > 
      <intent-filter> 
       <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
      </intent-filter> 
     </receiver> 

и разрешение записи в <uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />

Просто увидеть ниже отредактированного код:

Используйте BroadcastReceiver следующим образом:

public class MyOutgoingCallHandler extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // Extract phone number reformatted by previous receivers 
     String phoneNumber = getResultData(); 
     if (phoneNumber == null) { 
      // No reformatted number, use the original 
      phoneNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER); 
     } 

     if(phoneNumber.equals("1234")){ // DialedNumber checking. 
      // My app will bring up, so cancel the broadcast 
      setResultData(null); 

      // Start my app 
      Intent i=new Intent(context,MainActivity.class); 
      i.putExtra("extra_phone", phoneNumber); 
      i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      context.startActivity(i); 
     }  
    } 
} 

Не забудьте зарегистрировать этот ресивер в манифесте

<receiver android:name="MyOutgoingCallHandler"> 
    <intent-filter > 
     <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> 
    </intent-filter> 
</receiver> 

Кроме того, включают в себя разрешение:

Теперь, если вы не обращая внимания на проверку в приемнике номера, вы можете получить набранный номер внутри MainActivity,

String phone=getIntent().getStringExtra("extra_phone"); 
    if(!phone.equals(null)){ 
     Toast.makeText(getBaseContext(), phone, Toast.LENGTH_LONG).show(); 
    } 

Если вы хотите запустить приложение как вызов магического номера, довольно просто использовать BroadcastReceivers для исходящего вызова, вы можете получить решение из приложения Right Number

+0

Уважаемый Хануман, код тоже не работал для нормальных номеров. Я пробовал набирать номер 1435. Не могли бы вы помочь в его весьма срочной помощи. Спасибо – user38843

+0

Посмотрите это, вы получите полное разъяснение http: //переполнение стека.com/questions/27596700/what-is-stealth-mode-in-android – Hanuman

+0

предоставленная страница удалена из stackoverflow, вы можете указать другой url или любой учебник для этого же. Большое спасибо Hanuman – user38843

0

исключение: проблема соединения неверный код MMI андроид

Для обнаружения исходящего события телефонного звонка необходимо зарегистрироваться вещать с NEW_OUTGOING_CALL действий в AndroidManifest.xml:

<receiver android:name=".MainActivity"> 
    <intent-filter> 
    <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
    </intent-filter> 
</receiver> 

, а также добавить PROCESS_OUTGOING_CALLS разрешение :

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/> 
+0

Исключение: проблема подключения неверный код mmi android.can вы, пожалуйста, помогите мне в решении этого исключения. Я боюсь уже почти неделю, и его довольно срочный – user38843

+0

@ user38843: попытайтесь передать такое же действительное число, как '1234563', а затем проверить, как получить такую ​​же проблему? –

+0

Спасибо за ваш ответ. Набор номера вызывает телефонный звонок :( – user38843

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