Changes needed to make Incoming calls work while fbe locked
+ All in-call components are marked as encryptionAware so Telecom can
bind to and use them.
+ Added null checks on cursors. When in FBE locked state,
non-encryption aware ContentProviders return null
Bug=26542121
Change-Id: Ia49536c957d3d721401c05bf638fdd9dd371a731
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 91c91b9..2ec57b9 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -294,7 +294,8 @@
android:launchMode="singleInstance"
android:configChanges="keyboardHidden"
android:exported="false"
- android:screenOrientation="nosensor" >
+ android:screenOrientation="nosensor"
+ android:encryptionAware="true">
</activity>
<!-- BroadcastReceiver for receiving Intents from Notification mechanism. -->
@@ -302,7 +303,8 @@
android:exported="false" />
<service android:name="com.android.incallui.InCallServiceImpl"
- android:permission="android.permission.BIND_INCALL_SERVICE" >
+ android:permission="android.permission.BIND_INCALL_SERVICE"
+ android:encryptionAware="true">
<meta-data android:name="android.telecom.IN_CALL_SERVICE_UI" android:value="true" />
<intent-filter>
<action android:name="android.telecom.InCallService"/>
diff --git a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
index 06aca78..ff9b1be 100644
--- a/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
+++ b/src/com/android/dialer/database/FilteredNumberAsyncQueryHandler.java
@@ -134,7 +134,7 @@
new Listener() {
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
- listener.onHasBlockedNumbers(cursor.getCount() > 0);
+ listener.onHasBlockedNumbers(cursor != null && cursor.getCount() > 0);
}
},
getContentUri(null),
@@ -161,7 +161,7 @@
new Listener() {
@Override
protected void onQueryComplete(int token, Object cookie, Cursor cursor) {
- if (cursor.getCount() != 1) {
+ if (cursor == null || cursor.getCount() != 1) {
listener.onCheckComplete(null);
return;
}
@@ -246,9 +246,10 @@
startQuery(NO_TOKEN, new Listener() {
@Override
public void onQueryComplete(int token, Object cookie, Cursor cursor) {
- if (cursor.getCount() != 1) {
+ int rowsReturned = cursor == null ? 0 : cursor.getCount();
+ if (rowsReturned != 1) {
throw new SQLiteDatabaseCorruptException
- ("Returned " + cursor.getCount() + " rows for uri "
+ ("Returned " + rowsReturned + " rows for uri "
+ uri + "where 1 expected.");
}
cursor.moveToFirst();