Замена в приложении вызова

Итак, позвольте мне видеть, мы хотим показать адам и канун, есть какой-то запретный плод в дереве, и мы бы хотели, чтобы они не ели ...

Как насчет того, чтобы иметь ангела с огненным мечом?

  1. Может показаться наивным, и я не знаю, что делает ваше приложение на самом деле, но как насчет обширного использования включает?
  2. Для законного пользователя есть все программное обеспечение, которое должно быть видимым или только его части? Поскольку вы можете запутать и предоставить копию исходного кода для легитимации
  3. Вы можете обернуть php в контейнер, например Phalanger (.NET)
  4. . Возможно, это связано с внешней кражей, что означает код свободно просматривается через Интернет, поскольку клиенты его используют. Это может стоить инвестировать в дешевый хостинг веб-сайтов за 50 долларов в год, регистрируя своих законных клиентов с серийным номером в своем коде и регулярно публикуйте информацию о своем приложении на своем веб-сайте. По крайней мере, вы обнаружите, когда код был взломан. Вы можете надавить на него с саморазрушением через n дней, дав вам достаточно времени, чтобы связаться с вашим клиентом и изменить серийный номер. Это может быть единственный запутанный include () всего кода
24
задан Shashank Agrawal 12 July 2018 в 05:18
поделиться

2 ответа

В соответствии с документами и когда вы сами комментируете, вам необходимо добавить это в свой манифест :

<service android:name="your.package.YourInCallServiceImplementation"
          android:permission="android.permission.BIND_INCALL_SERVICE">
      <meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
      <intent-filter>
          <action android:name="android.telecom.InCallService"/>
      </intent-filter>
 </service>

android:name должны быть заменены на класс, который реализует этот сервис.


 <activity android:name="your.package.YourDialerActivity">
      <intent-filter>
           <action android:name="android.intent.action.DIAL" />
           <category android:name="android.intent.category.DEFAULT" />
      </intent-filter>
 </activity>

android:name должен быть заменен классом, который реализует основное действие для вашей собственной реализации номеронабирателя.

Здесь вы можете найти больше информации об этом: https://developer.android.com/guide/topics/connectivity/telecom/selfManaged

А вот пример проект, который вы можете использовать в качестве руководства: https://github.com/arekolek/simple-phone

И это: https://stackoverflow.com/a/ 49835987/1916449

0
ответ дан Oscar Caballero Pozas 12 July 2018 в 05:18
поделиться
  1. Возможно ли даже стороннему приложению заменить приложение по умолчанию в приложении вызова?

Да, начиная с API 23, это возможно.

  1. Существуют ли примеры реализации, использующие этот API, которые я могу использовать в качестве ссылки? Я нашел реализацию Google , но это системное приложение, которое использует некоторые разрешения, недоступные для других приложений (например: android.permission.MODIFY_PHONE_STATE).

Единственный известный мне образец - это созданный мною образец https://github.com/arekolek/simple-phone , который уже упоминался в другом ответе. а также.

  1. Правильно ли я предполагаю, что после предоставления правильной InCallService регистрации манифеста и реализации заглушки я мог ожидать найти мое приложение в Default Apps -> Phone? Нужно ли мне объявить что-то еще?

На самом деле, нет.

Как упомянуто в другом ответе по теме , вам вообще не нужно, чтобы InCallService появлялось в этом списке.

Тем не менее, вам нужно зарегистрировать действие с двумя фильтрами намерений, один со схемой tel Ури, а другой с пустой схемой (недостаточно только одного из них):

<intent-filter>
    <action android:name="android.intent.action.DIAL" />
    <data android:scheme="tel" />
</intent-filter>
<intent-filter>
    <action android:name="android.intent.action.DIAL" />
</intent-filter>

Это смутно упоминается в документах , а явно указано в коде AOSP .

1128 Этого достаточно, чтобы появиться в этом списке. Только тогда, чтобы предоставить пользовательский интерфейс для вызова , вам действительно понадобится InCallService.

0
ответ дан arekolek 12 July 2018 в 05:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: