Made sure that templated views support RTL
Previously templated views would not support RTL if the underlying app doesn't. We're now supporting it. Fixes: 151117132 Test: add notification from app that doesn't support RTL, observe normal template Change-Id: Iec7e3b854989100977efba87c9c2cd98a2759ff9
This commit is contained in:
@@ -6221,6 +6221,17 @@ public class Notification implements Parcelable
|
||||
}
|
||||
return loadHeaderAppName();
|
||||
}
|
||||
|
||||
/**
|
||||
* @return if this builder uses a template
|
||||
*
|
||||
* @hide
|
||||
*/
|
||||
public boolean usesTemplate() {
|
||||
return (mN.contentView == null && mN.headsUpContentView == null
|
||||
&& mN.bigContentView == null)
|
||||
|| (mStyle != null && mStyle.displayCustomViewInline());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,8 @@ import android.annotation.NonNull;
|
||||
import android.annotation.Nullable;
|
||||
import android.app.Notification;
|
||||
import android.content.Context;
|
||||
import android.content.ContextWrapper;
|
||||
import android.content.pm.ApplicationInfo;
|
||||
import android.os.AsyncTask;
|
||||
import android.os.CancellationSignal;
|
||||
import android.service.notification.StatusBarNotification;
|
||||
@@ -705,6 +707,10 @@ public class NotificationContentInflater implements NotificationRowContentBinder
|
||||
sbn.getNotification());
|
||||
|
||||
Context packageContext = sbn.getPackageContext(mContext);
|
||||
if (recoveredBuilder.usesTemplate()) {
|
||||
// For all of our templates, we want it to be RTL
|
||||
packageContext = new RtlEnabledContext(packageContext);
|
||||
}
|
||||
Notification notification = sbn.getNotification();
|
||||
if (notification.isMediaNotification()) {
|
||||
MediaNotificationProcessor processor = new MediaNotificationProcessor(mContext,
|
||||
@@ -771,6 +777,19 @@ public class NotificationContentInflater implements NotificationRowContentBinder
|
||||
// try to purge unnecessary cached entries.
|
||||
mRow.getImageResolver().purgeCache();
|
||||
}
|
||||
|
||||
private class RtlEnabledContext extends ContextWrapper {
|
||||
private RtlEnabledContext(Context packageContext) {
|
||||
super(packageContext);
|
||||
}
|
||||
|
||||
@Override
|
||||
public ApplicationInfo getApplicationInfo() {
|
||||
ApplicationInfo applicationInfo = super.getApplicationInfo();
|
||||
applicationInfo.flags |= ApplicationInfo.FLAG_SUPPORTS_RTL;
|
||||
return applicationInfo;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@VisibleForTesting
|
||||
|
||||
Reference in New Issue
Block a user