Search in sources :

Example 11 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by DirtyUnicorns.

the class SelectPrinterActivity method onLoadFinished.

@Override
public void onLoadFinished(Loader<List<PrintServiceInfo>> loader, List<PrintServiceInfo> services) {
    mEnabledPrintServices.clear();
    if (services != null && !services.isEmpty()) {
        final int numServices = services.size();
        for (int i = 0; i < numServices; i++) {
            PrintServiceInfo service = services.get(i);
            mEnabledPrintServices.put(service.getComponentName(), service);
        }
    }
    onPrintServicesUpdate();
}
Also used : PrintServiceInfo(android.printservice.PrintServiceInfo)

Example 12 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by DirtyUnicorns.

the class UserState method readInstalledPrintServicesLocked.

private void readInstalledPrintServicesLocked() {
    Set<PrintServiceInfo> tempPrintServices = new HashSet<PrintServiceInfo>();
    List<ResolveInfo> installedServices = mContext.getPackageManager().queryIntentServicesAsUser(mQueryIntent, GET_SERVICES | GET_META_DATA | MATCH_DEBUG_TRIAGED_MISSING, mUserId);
    final int installedCount = installedServices.size();
    for (int i = 0, count = installedCount; i < count; i++) {
        ResolveInfo installedService = installedServices.get(i);
        if (!android.Manifest.permission.BIND_PRINT_SERVICE.equals(installedService.serviceInfo.permission)) {
            ComponentName serviceName = new ComponentName(installedService.serviceInfo.packageName, installedService.serviceInfo.name);
            Slog.w(LOG_TAG, "Skipping print service " + serviceName.flattenToShortString() + " since it does not require permission " + android.Manifest.permission.BIND_PRINT_SERVICE);
            continue;
        }
        tempPrintServices.add(PrintServiceInfo.create(installedService, mContext));
    }
    mInstalledServices.clear();
    mInstalledServices.addAll(tempPrintServices);
}
Also used : ResolveInfo(android.content.pm.ResolveInfo) PrintServiceInfo(android.printservice.PrintServiceInfo) ComponentName(android.content.ComponentName) HashSet(java.util.HashSet)

Example 13 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by DirtyUnicorns.

the class UserState method setPrintServiceEnabled.

public void setPrintServiceEnabled(@NonNull ComponentName serviceName, boolean isEnabled) {
    synchronized (mLock) {
        boolean isChanged = false;
        if (isEnabled) {
            isChanged = mDisabledServices.remove(serviceName);
        } else {
            // Make sure to only disable services that are currently installed
            final int numServices = mInstalledServices.size();
            for (int i = 0; i < numServices; i++) {
                PrintServiceInfo service = mInstalledServices.get(i);
                if (service.getComponentName().equals(serviceName)) {
                    mDisabledServices.add(serviceName);
                    isChanged = true;
                    break;
                }
            }
        }
        if (isChanged) {
            writeDisabledPrintServicesLocked(mDisabledServices);
            onConfigurationChangedLocked();
        }
    }
}
Also used : PrintServiceInfo(android.printservice.PrintServiceInfo)

Example 14 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by crdroidandroid.

the class SelectPrinterActivity method onCreate.

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActionBar().setIcon(R.drawable.ic_print);
    setContentView(R.layout.select_printer_activity);
    mEnabledPrintServices = new ArrayMap<>();
    mPrinterRegistry = new PrinterRegistry(this, null, LOADER_ID_PRINT_REGISTRY, LOADER_ID_PRINT_REGISTRY_INT);
    // Hook up the list view.
    mListView = (ListView) findViewById(android.R.id.list);
    final DestinationAdapter adapter = new DestinationAdapter();
    adapter.registerDataSetObserver(new DataSetObserver() {

        @Override
        public void onChanged() {
            if (!isFinishing() && adapter.getCount() <= 0) {
                updateEmptyView(adapter);
            }
        }

        @Override
        public void onInvalidated() {
            if (!isFinishing()) {
                updateEmptyView(adapter);
            }
        }
    });
    mListView.setAdapter(adapter);
    mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            if (!((DestinationAdapter) mListView.getAdapter()).isActionable(position)) {
                return;
            }
            PrinterInfo printer = (PrinterInfo) mListView.getAdapter().getItem(position);
            if (printer == null) {
                startAddPrinterActivity();
            } else {
                onPrinterSelected(printer);
            }
        }
    });
    findViewById(R.id.button).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            startAddPrinterActivity();
        }
    });
    registerForContextMenu(mListView);
    getLoaderManager().initLoader(LOADER_ID_ENABLED_PRINT_SERVICES, null, this);
    // If some are disabled and some are enabled show a toast to notify the user
    if (savedInstanceState == null || !savedInstanceState.getBoolean(KEY_NOT_FIRST_CREATE)) {
        List<PrintServiceInfo> allServices = ((PrintManager) getSystemService(Context.PRINT_SERVICE)).getPrintServices(PrintManager.ALL_SERVICES);
        boolean hasEnabledServices = false;
        boolean hasDisabledServices = false;
        if (allServices != null) {
            final int numServices = allServices.size();
            for (int i = 0; i < numServices; i++) {
                if (allServices.get(i).isEnabled()) {
                    hasEnabledServices = true;
                } else {
                    hasDisabledServices = true;
                }
            }
        }
        if (!hasEnabledServices) {
            startAddPrinterActivity();
        } else if (hasDisabledServices) {
            String disabledServicesSetting = Settings.Secure.getString(getContentResolver(), Settings.Secure.DISABLED_PRINT_SERVICES);
            if (!TextUtils.isEmpty(disabledServicesSetting)) {
                Toast.makeText(this, getString(R.string.print_services_disabled_toast), Toast.LENGTH_LONG).show();
            }
        }
    }
}
Also used : PrintManager(android.print.PrintManager) DataSetObserver(android.database.DataSetObserver) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) SearchView(android.widget.SearchView) TextView(android.widget.TextView) ListView(android.widget.ListView) PrintServiceInfo(android.printservice.PrintServiceInfo) OnClickListener(android.view.View.OnClickListener) AdapterView(android.widget.AdapterView) PrinterInfo(android.print.PrinterInfo)

Example 15 with PrintServiceInfo

use of android.printservice.PrintServiceInfo in project android_frameworks_base by crdroidandroid.

the class SelectPrinterActivity method onLoadFinished.

@Override
public void onLoadFinished(Loader<List<PrintServiceInfo>> loader, List<PrintServiceInfo> services) {
    mEnabledPrintServices.clear();
    if (services != null && !services.isEmpty()) {
        final int numServices = services.size();
        for (int i = 0; i < numServices; i++) {
            PrintServiceInfo service = services.get(i);
            mEnabledPrintServices.put(service.getComponentName(), service);
        }
    }
    onPrintServicesUpdate();
}
Also used : PrintServiceInfo(android.printservice.PrintServiceInfo)

Aggregations

PrintServiceInfo (android.printservice.PrintServiceInfo)32 ComponentName (android.content.ComponentName)18 ResolveInfo (android.content.pm.ResolveInfo)9 DataSetObserver (android.database.DataSetObserver)5 PrintManager (android.print.PrintManager)5 PrinterInfo (android.print.PrinterInfo)5 View (android.view.View)5 OnClickListener (android.view.View.OnClickListener)5 AdapterView (android.widget.AdapterView)5 ImageView (android.widget.ImageView)5 ListView (android.widget.ListView)5 SearchView (android.widget.SearchView)5 TextView (android.widget.TextView)5 Nullable (android.annotation.Nullable)4 HashSet (java.util.HashSet)4 Intent (android.content.Intent)1