Android Open Source - Mountie Mountie Notification






From Project

Back to project page Mountie.

License

The source code is released under:

GNU General Public License

If you think the Android project Mountie listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Mountie, a tool for mounting external storage on Android
 * Copyright (C) 2014 Andrew Comminos <andrew@morlunk.com>
 *//  ww w .j a  v  a 2s  .co m
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package com.morlunk.mountie;

import android.app.Notification;
import android.app.PendingIntent;
import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;

import com.morlunk.mountie.fs.Mount;
import com.morlunk.mountie.fs.Partition;

import java.util.Collection;

/**
 * Created by andrew on 17/09/14.
 */
public class MountieNotification {
    public static final int NOTIFICATION_ID = 0x131;
    private static final String ACTION_UNMOUNT = "unmount";

    private Service mService;
    private Listener mListener;
    private String mTicker;
    private Collection<Mount> mMounts;

    private BroadcastReceiver mButtonReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            if (ACTION_UNMOUNT.equals(intent.getAction())) {
                mListener.unmountAll();
            } else {
                throw new UnsupportedOperationException();
            }
        }
    };

    public MountieNotification(Service service, Listener listener) {
        mService = service;
        mListener = listener;
        mService.registerReceiver(mButtonReceiver, new IntentFilter(ACTION_UNMOUNT));
    }

    public void show() {
        Notification.Builder builder = new Notification.Builder(mService);
        builder.setSmallIcon(R.drawable.ic_stat_mountie);
        builder.setContentTitle(mService.getString(R.string.app_name));
        builder.setTicker(mTicker);

        if (mMounts != null && mMounts.size() > 0) {
            builder.setContentText(mService.getString(R.string.devs_mounted, mMounts.size()));
            Notification.InboxStyle style = new Notification.InboxStyle();
            for (Mount mount : mMounts) {
                Partition partition = mount.getDevice();
                if (partition.getLabel() != null) {
                    style.addLine(mService.getString(R.string.notify_label, partition.getLabel()));
                }
                style.addLine(mService.getString(R.string.notify_uuid, partition.getUUID()));
                style.addLine(mService.getString(R.string.notify_dev, partition.getVolumeName()));
            }
            builder.setStyle(style);

            PendingIntent contentIntent = PendingIntent.getActivity(mService, 0,
                    new Intent(mService, MountieActivity.class), PendingIntent.FLAG_CANCEL_CURRENT);
            builder.setContentIntent(contentIntent);

            PendingIntent buttonIntent = PendingIntent.getBroadcast(mService, 0,
                    new Intent(ACTION_UNMOUNT), PendingIntent.FLAG_CANCEL_CURRENT);
            builder.addAction(R.drawable.ic_action_unmount,
                    mService.getString(R.string.unmount_all), buttonIntent);
        } else {
            builder.setContentText(mService.getString(R.string.no_devs_mounted));
        }

        mService.startForeground(NOTIFICATION_ID, builder.build());
    }

    public void hide() {
        mService.stopForeground(true);
    }

    public void unregister() {
        mService.unregisterReceiver(mButtonReceiver);
    }

    public void setTicker(String ticker) {
        mTicker = ticker;
    }

    public void setMounts(Collection<Mount> mounts) {
        mMounts = mounts;
    }

    /**
     * Created by andrew on 17/09/14.
     */
    public static interface Listener {
        public void unmountAll();
    }
}




Java Source Code List

com.morlunk.mountie.ApplicationTest.java
com.morlunk.mountie.Automounter.java
com.morlunk.mountie.Constants.java
com.morlunk.mountie.MountieActivity.java
com.morlunk.mountie.MountieBootReceiver.java
com.morlunk.mountie.MountieNotification.java
com.morlunk.mountie.MountieService.java
com.morlunk.mountie.UsbHotplugReceiver.java
com.morlunk.mountie.command.BlkidCommand.java
com.morlunk.mountie.fs.BlockDeviceObserver.java
com.morlunk.mountie.fs.BlockDevice.java
com.morlunk.mountie.fs.MountException.java
com.morlunk.mountie.fs.MountListener.java
com.morlunk.mountie.fs.Mount.java
com.morlunk.mountie.fs.PartitionListener.java
com.morlunk.mountie.fs.Partition.java
com.morlunk.mountie.fs.UnmountListener.java
com.morlunk.mountie.fs.Volume.java
com.morlunk.mountie.jni.Native.java
com.morlunk.mountie.util.Filesystems.java
com.stericson.RootTools.Constants.java
com.stericson.RootTools.RootTools.java
com.stericson.RootTools.containers.Mount.java
com.stericson.RootTools.containers.Permissions.java
com.stericson.RootTools.containers.RootClass.java
com.stericson.RootTools.containers.Symlink.java
com.stericson.RootTools.exceptions.RootDeniedException.java
com.stericson.RootTools.execution.CommandCapture.java
com.stericson.RootTools.execution.Command.java
com.stericson.RootTools.execution.JavaCommandCapture.java
com.stericson.RootTools.execution.Shell.java
com.stericson.RootTools.internal.Installer.java
com.stericson.RootTools.internal.InternalVariables.java
com.stericson.RootTools.internal.Remounter.java
com.stericson.RootTools.internal.RootToolsInternalMethods.java
com.stericson.RootTools.internal.Runner.java