use of android.preview.support.v4.app.NotificationManagerCompat in project RSAndroidApp by RailwayStations.
the class NearbyBahnhofNotificationManager method onNotificationReady.
/**
* Called back once the notification was built up ready.
*
* @param notification
*/
protected void onNotificationReady(Notification notification) {
if (context == null)
// we're already destroyed
return;
// Get an instance of the NotificationManager service
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(context);
// Build the notification and issues it with notification manager.
notificationManager.notify(NOTIFICATION_ID, notification);
}
use of android.preview.support.v4.app.NotificationManagerCompat in project AndroidChromium by JackyAndroid.
the class MediaNotificationManager method updateNotification.
private void updateNotification() {
if (mService == null)
return;
if (mMediaNotificationInfo == null)
return;
updateMediaSession();
mNotificationBuilder = new NotificationCompat.Builder(mContext);
setMediaStyleLayoutForNotificationBuilder(mNotificationBuilder);
mNotificationBuilder.setSmallIcon(mMediaNotificationInfo.icon);
mNotificationBuilder.setAutoCancel(false);
mNotificationBuilder.setLocalOnly(true);
if (mMediaNotificationInfo.supportsSwipeAway()) {
mNotificationBuilder.setOngoing(!mMediaNotificationInfo.isPaused);
mNotificationBuilder.setDeleteIntent(createPendingIntent(ListenerService.ACTION_SWIPE));
}
// TODO(avayvod) work out what we should do in this case. See https://crbug.com/585395.
if (mMediaNotificationInfo.contentIntent != null) {
mNotificationBuilder.setContentIntent(PendingIntent.getActivity(mContext, mMediaNotificationInfo.tabId, mMediaNotificationInfo.contentIntent, PendingIntent.FLAG_UPDATE_CURRENT));
// Set FLAG_UPDATE_CURRENT so that the intent extras is updated, otherwise the
// intent extras will stay the same for the same tab.
}
mNotificationBuilder.setVisibility(mMediaNotificationInfo.isPrivate ? NotificationCompat.VISIBILITY_PRIVATE : NotificationCompat.VISIBILITY_PUBLIC);
Notification notification = mNotificationBuilder.build();
// Moving it back to background allows the user to remove the notification.
if (mMediaNotificationInfo.supportsSwipeAway() && mMediaNotificationInfo.isPaused) {
mService.stopForeground(false);
NotificationManagerCompat manager = NotificationManagerCompat.from(mContext);
manager.notify(mMediaNotificationInfo.id, notification);
} else {
mService.startForeground(mMediaNotificationInfo.id, notification);
}
}
use of android.preview.support.v4.app.NotificationManagerCompat in project AndroidChromium by JackyAndroid.
the class MediaNotificationManager method clearNotification.
private void clearNotification() {
if (mMediaNotificationInfo == null)
return;
NotificationManagerCompat manager = NotificationManagerCompat.from(mContext);
manager.cancel(mMediaNotificationInfo.id);
if (mMediaSession != null) {
mMediaSession.setCallback(null);
mMediaSession.setActive(false);
mMediaSession.release();
mMediaSession = null;
}
mContext.stopService(createIntent(mContext));
mMediaNotificationInfo = null;
}
use of android.preview.support.v4.app.NotificationManagerCompat in project AndroidChromium by JackyAndroid.
the class DownloadManagerDelegate method addCompletedDownload.
/**
* @see android.app.DownloadManager#addCompletedDownload(String, String, boolean, String,
* String, long, boolean)
*/
protected long addCompletedDownload(String fileName, String description, String mimeType, String path, long length, String originalUrl, String referer, String downloadGuid) {
DownloadManager manager = (DownloadManager) mContext.getSystemService(Context.DOWNLOAD_SERVICE);
NotificationManagerCompat notificationManager = NotificationManagerCompat.from(mContext);
boolean useSystemNotification = !notificationManager.areNotificationsEnabled();
long downloadId = -1;
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.M) {
Class<?> c = manager.getClass();
try {
Class[] args = { String.class, String.class, boolean.class, String.class, String.class, long.class, boolean.class, Uri.class, Uri.class };
Method method = c.getMethod("addCompletedDownload", args);
Uri originalUri = Uri.parse(originalUrl);
Uri refererUri = referer == null ? Uri.EMPTY : Uri.parse(referer);
downloadId = (Long) method.invoke(manager, fileName, description, true, mimeType, path, length, useSystemNotification, originalUri, refererUri);
} catch (SecurityException e) {
Log.e(TAG, "Cannot access the needed method.");
} catch (NoSuchMethodException e) {
Log.e(TAG, "Cannot find the needed method.");
} catch (InvocationTargetException e) {
Log.e(TAG, "Error calling the needed method.");
} catch (IllegalAccessException e) {
Log.e(TAG, "Error accessing the needed method.");
}
} else {
downloadId = manager.addCompletedDownload(fileName, description, true, mimeType, path, length, useSystemNotification);
}
addDownloadIdMapping(downloadId, downloadGuid);
return downloadId;
}
use of android.preview.support.v4.app.NotificationManagerCompat in project Small by wequick.
the class MainFragment method onCreateView.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_main, container, false);
// 启动一个带自定义转场动画的Activity
// 需要用户在宿主提前占坑的地方:
// 1. 转场动画相关anim资源
Button button = (Button) rootView.findViewById(R.id.start_transition_activity_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainFragment.this.getContext(), TransitionActivity.class);
startActivity(intent);
}
});
/**
* 以下代码测试:
* 1. 成功发送通知, 在通知栏显示通知图标与信息
* 2. 点击通知, 成功跳转指定Activity
* 3. 在该Activity返回, 成功返回上一个界面
* @see https://developer.android.com/training/notify-user/navigation.html#ExtendedNotification
*/
// 方案一: 使用PendingIntent.getActivity构造PendingIntent, 发起一个通知。
// 额外操作:
// 1. 在 `stub` 模块放置 `smallIcon` 图片资源
// 2. 使用 `Small.wrapIntent(intent)` 暗度插件意图
button = (Button) rootView.findViewById(R.id.send_notification_special_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = getContext();
Intent onclickIntent = new Intent(context, NotifyResultActivity.class);
onclickIntent.putExtra("notification_id", MY_NOTIFICATION_ID);
//!< 增加这行代码
Small.wrapIntent(onclickIntent);
PendingIntent pi = PendingIntent.getActivity(context, 0, onclickIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Bitmap largeIcon = BitmapFactory.decodeResource(getContext().getResources(), // large icon的资源可以在插件里
R.drawable.ic_large_notification);
NotificationCompat.Builder nb = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.ic_notification).setLargeIcon(largeIcon).setContentTitle("Small").setContentText("Click to start pending intent with PendingIntent.getActivity").setContentIntent(pi);
NotificationManagerCompat nm = NotificationManagerCompat.from(context);
nm.notify(MY_NOTIFICATION_ID, nb.build());
}
});
// 方案二: 使用TaskStackBuilder构造PendingIntent, 发起一个通知
// 额外操作:
// 1. 在 `stub` 模块放置 `smallIcon` 图片资源
//
// 这里不需要手动修改意图, 因为 `Small` 对 `TaskStackBuilder` 进行了Hook, 自动完成wrapIntent
button = (Button) rootView.findViewById(R.id.send_notification_taskstack_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Context context = getContext();
Intent onclickIntent = new Intent(context, NotifyResultActivity.class);
onclickIntent.putExtra("notification_id", MY_NOTIFICATION_ID);
PendingIntent pi = TaskStackBuilder.create(context).addNextIntent(getActivity().getIntent()).addNextIntent(onclickIntent).getPendingIntent(0, PendingIntent.FLAG_UPDATE_CURRENT);
Bitmap largeIcon = BitmapFactory.decodeResource(getContext().getResources(), // large icon的资源可以在插件里
R.drawable.ic_large_notification);
NotificationCompat.Builder nb = new NotificationCompat.Builder(context).setSmallIcon(R.drawable.ic_notification).setLargeIcon(largeIcon).setContentTitle("Small").setContentText("Click to start pending intent with TaskStackBuilder").setContentIntent(pi);
NotificationManagerCompat nm = NotificationManagerCompat.from(context);
nm.notify(MY_NOTIFICATION_ID, nb.build());
}
});
// 本地服务
button = (Button) rootView.findViewById(R.id.start_service_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getContext(), MyLocalService.class);
getContext().startService(intent);
}
});
button = (Button) rootView.findViewById(R.id.stop_service_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getContext(), MyLocalService.class);
getContext().stopService(intent);
}
});
// 远程服务
mServiceConnection = new ServiceConnection() {
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
}
@Override
public void onServiceDisconnected(ComponentName name) {
}
};
button = (Button) rootView.findViewById(R.id.bind_remote_service_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getContext(), MyRemoteService.class);
getContext().bindService(intent, mServiceConnection, Context.BIND_AUTO_CREATE);
}
});
button = (Button) rootView.findViewById(R.id.unbind_remote_service_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
getContext().unbindService(mServiceConnection);
}
});
// 广播
button = (Button) rootView.findViewById(R.id.send_broadcast_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setAction("net.wequick.example.small.MyAction");
getContext().sendBroadcast(intent);
}
});
button = (Button) rootView.findViewById(R.id.get_content_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ContentResolver resolver = getContext().getContentResolver();
Uri uri = Uri.parse("content://net.wequick.example.small/test");
// Insert
ContentValues values = new ContentValues();
values.put("name", "T" + System.currentTimeMillis());
resolver.insert(uri, values);
// Query
Cursor cursor = resolver.query(uri, null, null, null, "id desc");
if (cursor == null) {
return;
}
if (cursor.moveToFirst()) {
String msg = "name in top record is: " + cursor.getString(1);
Toast.makeText(getContext(), msg, Toast.LENGTH_SHORT).show();
}
}
});
button = (Button) rootView.findViewById(R.id.start_remote_activity_button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getContext(), MyRemoteActivity.class);
startActivity(intent);
}
});
return rootView;
}
Aggregations