Androidはカスタムベルを削除すると、着信音が数字で表示されます.


[DESCRIPTION]
1.設定--音声--携帯電話の着メロ--着メロを追加--カスタム着メロ--音楽ファイルを着メロ2として選択する.設定--サウンド--携帯電話の着信音--追加着信音--カスタム着信音--Filesオーディオに入る--Ringtonesリストを表示し、さっき設定した着信音を削除
またはFile Management--Internal shared storage--Ringtonesにアクセスし、先ほど設定したベルを削除します.
 
[SOLUTION]
 
以前の現象の原因はベルが存在しないことであり,apkのリソースがロードされている.以下の修正は将来電気的に無音に変更することができ、貴社もあるベルを再設定し、ある固定的なベルに変更することができます.
RingtoneManager.java
//add begin
  public static boolean isRingtoneExist(Context context, Uri uri) {
        if (uri == null) {
            Log.e(TAG, "Check ringtone exist with null uri!");
            return false;
        }
        boolean exist = false;
        try {
            AssetFileDescriptor fd = context.getContentResolver().openAssetFileDescriptor(uri, "r");
            if (fd == null) {
                exist = false;
            } else {
                fd.close();
                exist = true;
            }
        } catch (FileNotFoundException e) {
            e.printStackTrace();
            exist = false;
        } catch (IOException e) {
            e.printStackTrace();
            exist = true;
        }
        Log.d(TAG, uri + " is exist " + exist);
        return exist;
    }
}
//add end

 /vendor/mediatek/proprietary/packages/services/Telecomm/src/com/android/server/telecom/RingtoneFactory.java
 55    public Ringtone getRingtone(Call incomingCall) {
56        // Use the default ringtone of the work profile if the contact is a work profile contact.
57        Context userContext = isWorkContact(incomingCall) ?
58                getWorkProfileContextForUser(mCallsManager.getCurrentUserHandle()) :
59                getContextForUserHandle(mCallsManager.getCurrentUserHandle());
60        Uri ringtoneUri = incomingCall.getRingtone();
61        Ringtone ringtone = null;
62
63        if(ringtoneUri != null && userContext != null) {
64            // Ringtone URI is explicitly specified. First, try to create a Ringtone with that.
65            ringtone = RingtoneManager.getRingtone(userContext, ringtoneUri);
66        }
67        if(ringtone == null) {
68            // Contact didn't specify ringtone or custom Ringtone creation failed. Get default
69            // ringtone for user or profile.
70            Context contextToUse = hasDefaultRingtoneForUser(userContext) ? userContext : mContext;
71            Uri defaultRingtoneUri;
72            if (UserManager.get(contextToUse).isUserUnlocked(contextToUse.getUserId())) {
73                defaultRingtoneUri = RingtoneManager.getActualDefaultRingtoneUri(contextToUse,
74                        RingtoneManager.TYPE_RINGTONE);
75            } else {
76                defaultRingtoneUri = Settings.System.DEFAULT_RINGTONE_URI;
77            }
//add begin
              if(!RingtoneManager.isRingtoneExist(contextToUse,defaultRingtoneUri)){
       RingtoneManager.setActualDefaultRingtoneUri(context,AudioManager.STREAM_RING,null);//         
   defaultRingtoneUri=null;
    }
//add end  
78            if (defaultRingtoneUri == null) {
79                return null;
80            }
81            ringtone = RingtoneManager.getRingtone(contextToUse, defaultRingtoneUri);
82        }
83        if (ringtone != null) {
84            ringtone.setStreamType(AudioManager.STREAM_RING);
85        }