Подтвердить что ты не робот

Как установить мое приложение для мобильных телефонов в Android Kitkat?

Я сделал приложение Android для Android, в котором я отправляю и получаю смс в качестве приложения для обмена сообщениями для Android. Теперь я установил свою цель в 4.4 (версия Android KitKat), но у Android KitKat есть новые настройки приложения "По умолчанию", которые пользователь может выбрать по одному приложению для обмена сообщениями. Я выполнил шаги с этого сайта, чтобы выбрать вариант для моего приложения sms в качестве приложения по умолчанию, но в настройках моего приложения никогда не появлялось во всплывающем меню выбора приложения для обмена сообщениями по умолчанию.

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

if( androidOS.contains("4.4") ){


if (! Telephony.Sms.getDefaultSmsPackage(this).equals(myPackageName) ) {

// App is not default.
// Show the "not currently set as the default SMS app" interface

builder = new AlertDialog.Builder(MyConversation.this);
builder.setMessage("Shoot The Messenger is not set as your default messaging app. Do you want to set it default?")
.setCancelable(false)
.setTitle("Alert!")
.setNegativeButton("No", new DialogInterface.OnClickListener() {

@Override
public void onClick(DialogInterface dialog, int which) {


}
})
.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@TargetApi(19)
public void onClick(DialogInterface dialog, int id) {

Intent intent =
new Intent(Telephony.Sms.Intents.ACTION_CHANGE_DEFAULT);

intent.putExtra(Telephony.Sms.Intents.EXTRA_PACKAGE_NAME,
getPackageName());

startActivity(intent);

}
});
builder.show();


}


}

Также я добавил код ниже в Manifest.

<?xml version="1.0" encoding="utf-8"?>

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="19" />


<uses-feature android:name="android.hardware.telephony.gsm"
    android:required="false"/>

<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.WRITE_SMS" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.WRITE" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="com.android.alarm.permission.SET_ALARM"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>
<uses-permission android:name="android.permission.INSTALL_PACKAGES"/>


<application              
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/Theme.NoTitle" >

    <activity
        android:name="coms3.shootmessenger.Mysplash"
        android:label="@string/app_name"
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>


         <intent-filter>
            <action android:name="android.intent.action.SENDTO" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="sms" />
            <data android:scheme="smsto" />

        </intent-filter>   


    </activity>

    <receiver android:name="coms3.shootmessenger.SmsReceiver" 
        android:permission="android.permission.BROADCAST_SMS" >


        <intent-filter>

            <action android:name="android.provider.Telephony.SMS_DELIVER" />

        </intent-filter>

          <!--  
         <intent-filter android:priority="2147483647" >

            <action android:name="android.provider.Telephony.SMS_RECEIVED" />

        </intent-filter>
       -->
    </receiver>   

    <receiver android:name="com.example.bootreceiver.MyBootReceiver">

        <intent-filter>

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


        </intent-filter>

     </receiver>

     <receiver android:name="coms3.shootmessenger.MMSReceiver"
         android:permission="android.permission.BROADCAST_WAP_PUSH">

          <intent-filter>

            <action android:name="android.provider.Telephony.WAP_PUSH_RECEIVED" />

            <data android:mimeType="application/vnd.wap.mms-message" />

          </intent-filter>

        </receiver>


     <receiver  android:process=":remote" android:name="AlarmManagerBroadcastReceiver"></receiver>
      <receiver  android:process=":remote" android:name="AlarmForPartyMessage"></receiver>
      <receiver  android:process=":remote" android:name="AlarmManagerMail"></receiver>

    <activity
        android:name="coms3.shootmessenger.ActivityFirstList"

        android:windowSoftInputMode="stateHidden" >
    </activity>
     <activity 
         android:name="coms3.shootmessenger.ActivityBase" 

         android:windowSoftInputMode="stateHidden" > 
     </activity> 
    <activity
        android:name="coms3.shootmessenger.SearchTab"
        android:configChanges="keyboardHidden|orientation"
         >
    </activity>
    <activity
        android:name="coms3.shootmessenger.ActivityMail"
        android:windowSoftInputMode="adjustPan"
         >
    </activity>
    <activity
        android:name="coms3.shootmessenger.ActivityScheduldMail"
        android:windowSoftInputMode="adjustPan"
        android:screenOrientation="portrait"
         >
    </activity>
    <activity
        android:name="coms3.shootmessenger.MessageTab" >

    </activity>

    <activity
        android:name="coms3.shootmessenger.SettingsTab"

        android:windowSoftInputMode="stateHidden" >
    </activity>

    <activity
        android:name="coms3.shootmessenger.MyConversation"

        android:windowSoftInputMode="stateHidden" >
    </activity>

    <activity
        android:name="coms3.shootmessenger.ActivityDelayedSending"

        android:windowSoftInputMode="stateHidden" >
    </activity>

    <activity
        android:name="coms3.shootmessenger.ActivityScheduldMessage"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
    </activity>
    <activity
        android:name="coms3.shootmessenger.ActivityStealthMode"

        android:windowSoftInputMode="stateHidden" >
    </activity>

    <activity
        android:name="coms3.shootmessenger.ActivitySms"

        android:windowSoftInputMode="stateHidden" >


    </activity>

    <activity
        android:name="coms3.shootmessenger.ActivityBlackList"

        android:windowSoftInputMode="stateHidden" >
    </activity>

    <activity
        android:name="coms3.shootmessenger.ActivityDeleteMessage"

        android:windowSoftInputMode="stateHidden" >
    </activity>

    <activity
        android:name="coms3.shootmessenger.ActivityDeleteone"

        android:windowSoftInputMode="stateHidden" >
    </activity>

     <activity android:name="coms3.shootmessenger.ActivitySmsnew" >


      <intent-filter>
            <action android:name="android.intent.action.SEND" />                
            <action android:name="android.intent.action.SENDTO" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="sms" />
            <data android:scheme="smsto" />

        </intent-filter>


    </activity>

      <activity
        android:name="coms3.shootmessenger.ActivityEventlist"

        android:windowSoftInputMode="stateHidden" >
    </activity>

     <activity
        android:name="coms3.shootmessenger.ActivityScheduleList"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
    </activity>

      <activity
        android:name="coms3.shootmessenger.ActivityCancelSchedule"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
    </activity>

       <activity
        android:name="coms3.shootmessenger.ActivityCancelEvent"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
    </activity>

      <activity
        android:name="coms3.shootmessenger.ActivityCancelMail"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
    </activity>

   <activity
        android:name="coms3.shootmessenger.Activitytutorial"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
    </activity>

     <activity
        android:name="coms3.shootmessenger.ActivityConversationtutorial"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
    </activity>

    <activity
        android:name="coms3.shootmessenger.Aboutus"
        android:screenOrientation="portrait"
        android:windowSoftInputMode="stateHidden" >
    </activity>



     <service android:name="coms3.shootmessenger.HeadlessSmsSendService"
             android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
             android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="sms" />
            <data android:scheme="smsto" />
            <data android:scheme="mms" />
            <data android:scheme="mmsto" />
        </intent-filter>
    </service>




</application>

UPDATE:

Примечание: Я тестирую эмулятор... После выполнения всех шагов я вижу только приложение для обмена сообщениями по умолчанию для Android, которое не принадлежит мне, как показано на изображении ниже. Любые виды помощи будут оценены. Спасибо в Advance.

enter image description here

4b9b3361

Ответ 1

инструкции, которые вы опубликовали, были правильными - проблема в том, что вы должны реализовать все необходимые возможности:

  • В широковещательном приемнике включите фильтр намерений для SMS_DELIVER_ACTION ( "android.provider.Telephony.SMS_DELIVER" ). Для широковещательного приемника также требуется разрешение BROADCAST_SMS. Это позволяет вашему приложению напрямую получать входящие SMS-сообщения.

  • В широковещательном приемнике включите фильтр намерений для WAP_PUSH_DELIVER_ACTION ( "android.provider.Telephony.WAP_PUSH_DELIVER" ) с типом MIME "application/vnd.wap.mms-message". Для широковещательного приемника также требуется разрешение BROADCAST_WAP_PUSH. Это позволяет вашему приложению напрямую получать входящие MMS-сообщения.

  • В вашей деятельности, которая поставляет новые сообщения, включите фильтр намерений для ACTION_SENDTO ( "android.intent.action.SENDTO" ) со схемами sms:, smsto:, mms: и mmsto:. Это позволяет вашему приложению получать намерения от других приложений, которые хотят доставить сообщение.

  • В службе включите фильтр намерений для ACTION_RESPONSE_VIA_MESSAGE ( "android.intent.action.RESPOND_VIA_MESSAGE" ) со схемами sms:, smsto:, mms: и mmsto:. Для этой службы также требуется разрешение SEND_RESPOND_VIA_MESSAGE.

Без всех четырех ваше приложение не будет отображаться в диалоговом окне выбора SMS по умолчанию.

Ответ 2

Если вы не выполняете все четыре требования, ваше приложение не будет отображаться в качестве стандартного SMS-приложения. Даже если ваше приложение не поддерживает MMS, вы должны добавить его в свой файл. Это не означает, что вы должны реализовать для них действия или услуги или приемники. Добавьте их в свой файл и получите свое SMS-сообщение в качестве стандартного SMS-приложения. Не стесняйтесь игнорировать любые ошибки lint.

<!-- BroadcastReceiver that listens for incoming MMS messages -->
    <receiver android:name=".MmsReceiver"
              android:enabled="@bool/is_kitkat"
              android:permission="android.permission.BROADCAST_WAP_PUSH">
        <intent-filter>
            <action android:name="android.provider.Telephony.WAP_PUSH_DELIVER" />
            <data android:mimeType="application/vnd.wap.mms-message" />
        </intent-filter>
    </receiver>

    <!-- Activity that allows the user to send new SMS/MMS messages -->
    <activity android:name=".ComposeSmsActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEND" />
            <action android:name="android.intent.action.SENDTO" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="sms" />
            <data android:scheme="smsto" />
            <data android:scheme="mms" />
            <data android:scheme="mmsto" />
        </intent-filter>
    </activity>

    <!-- Service that delivers messages from the phone "quick response" -->
    <service android:name=".HeadlessSmsSendService"
             android:permission="android.permission.SEND_RESPOND_VIA_MESSAGE"
             android:exported="true" >
        <intent-filter>
            <action android:name="android.intent.action.RESPOND_VIA_MESSAGE" />
            <category android:name="android.intent.category.DEFAULT" />
            <data android:scheme="sms" />
            <data android:scheme="smsto" />
            <data android:scheme="mms" />
            <data android:scheme="mmsto" />
        </intent-filter>
    </service>