Android скрыть приложение из списка приложений и запустить его из широковещательного приемника

Я хочу скрыть свое приложение из списка приложений, чтобы третьи лица не знали, что это приложение установлено.

Я видел, что этого можно достичь следующим образом: Если вы хотите скрыть свое приложение от панели запуска приложений, просто не включайте android.intent.category.LAUNCHER ни в какие действия.

Я попробовал это, и это работает. Теперь мне нужно определить ярлык для запуска моего приложения.

Я пытаюсь добиться этого с помощью широковещательного приемника для исходящего вызова. Итак, я проверю свой onreceive, если набранный номер = мой шаблон, а затем запущу свою активность

у меня тут несколько вопросов

  1. Это правильный способ сделать это

  2. Пожалуйста, смотрите мой код ниже для приемника, здесь мой приемник вызывается, но вместе с этим системным приложением для обработки «цифрового набора» также вызывается. Поэтому, даже если я наберу свой шаблон, после демонстрации своей активности он сделает вызов. Я хочу прекратить звонить, если набранный номер соответствует моему образцу. Как я могу достичь этого

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

    public class OutgoingCallInterceptor extends BroadcastReceiver {
        @Override
        public void onReceive(Context context, Intent intent) {
    
            final String originalNumber = intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
    
            this.setResultData("0123456789");
    
            final String newNumber = this.getResultData();
    
            String msg = "Intercepted outgoing call. Old number " + originalNumber + ", new number " + newNumber;
    
            Toast.makeText(context, msg, Toast.LENGTH_LONG).show();
            Intent intent1 = new Intent(context,ShowMessageActivity.class);
            intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent1);
        }
    }
    

Файл манифеста

<application android:icon="@drawable/icon" android:label="Outgoing Call Interceptor">

    <receiver android:name="OutgoingCallInterceptor">
        <intent-filter android:priority="1">
            <action android:name="android.intent.action.NEW_OUTGOING_CALL"></action>
        </intent-filter>
    </receiver>
    <activity android:name="ShowMessageActivity" ></activity>

</application>

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

person png    schedule 30.04.2012    source источник
comment
Привет, @preetha, тебе удалось это сделать? Я тоже пробую что-то подобное..   -  person n0nChun    schedule 23.10.2012
comment
да я сделал это. Если вы можете указать точную проблему, может быть, я могу помочь   -  person png    schedule 23.10.2012
comment
у меня тоже заработало! Спасибо! :)   -  person n0nChun    schedule 23.10.2012
comment
@preetha Как вы решили эту проблему? Может быть, вы можете поделиться своим решением для других :)   -  person Adarsh H S    schedule 18.05.2013
comment
извините, большой перерыв в проекте, если у меня будет время, я увижу свой код и обновлю ответ   -  person png    schedule 19.05.2013
comment
@preetha, пожалуйста, опубликуйте, что вы сделали.   -  person Shabbir Dhangot    schedule 24.01.2015


Ответы (3)


Но если под списком приложений вы подразумеваете все установленные приложения, то я думаю, что это невозможно, вы можете использовать

<action android:name="android.intent.action.CREATE_SHORTCUT" />

создать ярлык

А остальные ваши требования не могут быть выполнены, так как я не нашел способа скрыть свое приложение таким образом, и, кроме того, мобильные телефоны являются личными устройствами. И вы можете использовать широковещательный приемник, чтобы узнать, когда запускается намерение номеронабирателя. Но опять же, я думаю, вы не можете получить ключ введен как все вместе другое приложение.

person Its not blank    schedule 30.04.2012

  1. Это не право, но, возможно, единственный способ сделать это :)
  2. Вы можете попробовать вызвать this.abortBroadcast() на вашем приемнике, чтобы прервать вызов. К сожалению, я не могу проверить это сейчас, но это должно работать.
person Karatheodory    schedule 03.08.2012

person    schedule
comment
как вызвать его из почтового проекта. - person Shabbir Dhangot; 24.01.2015