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

Commit 34051031 authored by Santiago Etchebehere's avatar Santiago Etchebehere
Browse files

Use launcher metadata to read provider authority

Instead of a hardcoded authority, obtain the grid provider
authority from Launcher's metadata.

Bug: 120560197
Change-Id: Ifcd3589c8ffc481a4795fe6453b7a35c18516d42
parent 64927ae8
Loading
Loading
Loading
Loading
+4 −1
Original line number Diff line number Diff line
@@ -19,5 +19,8 @@
    <string name="themes_stub_package" translatable="false"/>
    <string name="clocks_stub_package" translatable="false"/>

    <string name="grid_control_authority" translatable="false"/>
    <!--Name of metadata in the main launcher Activity which values contains the authority
        corresponding to a ContentProvider in launcher to provide available grids and
        allow for changing them -->
    <string name="grid_control_metadata_name" translatable="false">"com.android.launcher3.grid.control"</string>
</resources>
 No newline at end of file
+14 −2
Original line number Diff line number Diff line
@@ -18,7 +18,10 @@ package com.android.customization.model.grid;
import android.content.ContentResolver;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageManager;
import android.content.pm.ProviderInfo;
import android.content.pm.ResolveInfo;
import android.content.res.Resources;
import android.database.Cursor;
import android.net.Uri;
@@ -56,8 +59,17 @@ public class LauncherGridOptionsProvider {

    public LauncherGridOptionsProvider(Context context) {
        mContext = context;
        // TODO: read this from Activity metadata instead
        mGridProviderAuthority = mContext.getString(R.string.grid_control_authority);
        Intent homeIntent =  new Intent(Intent.ACTION_MAIN)
                .addCategory(Intent.CATEGORY_HOME);

        ResolveInfo info = context.getPackageManager().resolveActivity(homeIntent,
                PackageManager.MATCH_DEFAULT_ONLY | PackageManager.GET_META_DATA);
        if (info != null && info.activityInfo != null && info.activityInfo.metaData != null) {
            mGridProviderAuthority = info.activityInfo.metaData.getString(
                    mContext.getString(R.string.grid_control_metadata_name));
        } else {
            mGridProviderAuthority = null;
        }
        // TODO: check permissions if needed
        mProviderInfo = TextUtils.isEmpty(mGridProviderAuthority) ? null
                : mContext.getPackageManager().resolveContentProvider(mGridProviderAuthority, 0);