Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit d8a9db84 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Add interface for SMS message read for financial app mainline module."

parents af8a9564 fa329d3d
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -296,6 +296,7 @@ java_defaults {
        "core/java/android/service/notification/IConditionListener.aidl",
        "core/java/android/service/notification/IConditionProvider.aidl",
        "core/java/android/service/settings/suggestions/ISuggestionService.aidl",
        "core/java/android/service/sms/IFinancialSmsService.aidl",
        "core/java/android/service/vr/IPersistentVrStateCallbacks.aidl",
        "core/java/android/service/vr/IVrListener.aidl",
        "core/java/android/service/vr/IVrManager.aidl",
+10 −0
Original line number Diff line number Diff line
@@ -5240,6 +5240,16 @@ package android.service.settings.suggestions {

}

package android.service.sms {

  public abstract class FinancialSmsService extends android.app.Service {
    method public android.os.IBinder onBind(android.content.Intent);
    method public abstract android.database.CursorWindow onGetSmsMessages(android.os.Bundle);
    field public static final java.lang.String ACTION_FINANCIAL_SERVICE_INTENT = "android.service.sms.action.FINANCIAL_SERVICE_INTENT";
  }

}

package android.service.textclassifier {

  public abstract class TextClassifierService extends android.app.Service {
+104 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package android.service.sms;

import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;

import android.annotation.NonNull;
import android.annotation.Nullable;
import android.annotation.SystemApi;
import android.app.Service;
import android.content.Intent;
import android.database.CursorWindow;
import android.os.Bundle;
import android.os.Handler;
import android.os.IBinder;
import android.os.Looper;
import android.os.RemoteCallback;
import android.os.RemoteException;

/**
 * A service to support sms messages read for financial apps.
 *
 * {@hide}
 */
@SystemApi
public abstract class FinancialSmsService extends Service {

    private static final String TAG = "FinancialSmsService";

    /**
     * The {@link Intent} action that must be declared as handled by a service
     * in its manifest for the system to recognize it as a quota providing
     * service.
     */
    public static final String ACTION_FINANCIAL_SERVICE_INTENT =
            "android.service.sms.action.FINANCIAL_SERVICE_INTENT";

    /** {@hide} **/
    public static final String EXTRA_SMS_MSGS = "sms_messages";

    private FinancialSmsServiceWrapper mWrapper;

    private void getSmsMessages(RemoteCallback callback, Bundle params) {
        final Bundle data = new Bundle();
        CursorWindow smsMessages = onGetSmsMessages(params);
        if (smsMessages != null) {
            data.putParcelable(EXTRA_SMS_MSGS, smsMessages);
        }
        callback.sendResult(data);
    }

    private final Handler mHandler = new Handler(Looper.getMainLooper(), null, true);

    /** @hide */
    public FinancialSmsService() {
    }

    @Override
    public void onCreate() {
        super.onCreate();
        mWrapper = new FinancialSmsServiceWrapper();
    }

    @Override
    public IBinder onBind(Intent intent) {
        return mWrapper;
    }

    /**
     * Get sms messages for financial apps.
     *
     * @param params parameters passed in by the calling app.
     * @return the {@code CursorWindow} with all sms messages for the app to read.
     *
     * {@hide}
     */
    @Nullable
    @SystemApi
    public abstract CursorWindow onGetSmsMessages(@NonNull Bundle params);

    private final class FinancialSmsServiceWrapper extends IFinancialSmsService.Stub {
        @Override
        public void getSmsMessages(RemoteCallback callback, Bundle params) throws RemoteException {
            mHandler.sendMessage(obtainMessage(
                    FinancialSmsService::getSmsMessages,
                    FinancialSmsService.this,
                    callback, params));
        }
    }

}
+30 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package android.service.sms;

import android.os.Bundle;
import android.os.RemoteCallback;

/**
 * Service used by financial apps to read sms messages.
 *
 * @hide
 */
oneway interface IFinancialSmsService
{
    void getSmsMessages(in RemoteCallback callback, in Bundle params);
}
 No newline at end of file
+7 −0
Original line number Diff line number Diff line
@@ -3008,6 +3008,13 @@
    <permission android:name="android.permission.BIND_TV_INPUT"
        android:protectionLevel="signature|privileged" />

    <!-- Must be required by an {@link android.service.sms.FinancialSmsService}
         to ensure that only the system can bind to it.
         @hide This is not a third-party API (intended for OEMs and system apps).
    -->
    <permission android:name="android.permission.BIND_FINANCIAL_SMS_SERVICE"
                android:protectionLevel="signature" />

    <!-- @SystemApi
         Must be required by a {@link com.android.media.tv.remoteprovider.TvRemoteProvider}
         to ensure that only the system can bind to it.