下面列出了com.facebook.react.bridge.ReactApplicationContext#getResources ( ) 实例代码,或者点击链接到github查看源代码,也可以在右侧发表评论。
static private Drawable screenShot(
ReactApplicationContext reactContext,
RenderScript rs,
Bitmap b1,
int radius,
float factor,
float brightness) {
try {
b1 = blur(rs,b1,radius, brightness,factor);
return new BitmapDrawable(reactContext.getResources(),b1);
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
public RNBatchModule(ReactApplicationContext reactContext) {
super(reactContext);
this.reactContext = reactContext;
this.reactContext.addLifecycleEventListener(this);
try {
Resources resources = reactContext.getResources();
String packageName = reactContext.getApplicationContext().getPackageName();
String batchAPIKey = resources.getString(resources.getIdentifier("BATCH_API_KEY", "string", packageName));
Batch.setConfig(new Config(batchAPIKey));
} catch (Exception e) {
Log.e("RNBatchPush", e.getMessage());
}
}
public MusicControlNotification(MusicControlModule module, ReactApplicationContext context) {
this.context = context;
this.module = module;
Resources r = context.getResources();
String packageName = context.getPackageName();
// Optional custom icon with fallback to the play icon
smallIcon = r.getIdentifier("music_control_icon", "drawable", packageName);
if (smallIcon == 0) smallIcon = r.getIdentifier("play", "drawable", packageName);
}
public void createIncomingCallNotification(ReactApplicationContext context,
CallInvite callInvite,
int notificationId,
Intent launchIntent)
{
if (BuildConfig.DEBUG) {
Log.d(TAG, "createIncomingCallNotification intent "+launchIntent.getFlags());
}
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, launchIntent, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
/*
* Pass the notification id and call sid to use as an identifier to cancel the
* notification later
*/
Bundle extras = new Bundle();
extras.putInt(INCOMING_CALL_NOTIFICATION_ID, notificationId);
extras.putString(CALL_SID_KEY, callInvite.getCallSid());
extras.putString(NOTIFICATION_TYPE, ACTION_INCOMING_CALL);
/*
* Create the notification shown in the notification drawer
*/
initCallNotificationsChannel(notificationManager);
NotificationCompat.Builder notificationBuilder =
new NotificationCompat.Builder(context, VOICE_CHANNEL)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setCategory(NotificationCompat.CATEGORY_CALL)
.setSmallIcon(R.drawable.ic_call_white_24dp)
.setContentTitle("Incoming call")
.setContentText(callInvite.getFrom() + " is calling")
.setOngoing(true)
.setAutoCancel(true)
.setExtras(extras)
.setFullScreenIntent(pendingIntent, true);
// build notification large icon
Resources res = context.getResources();
int largeIconResId = res.getIdentifier("ic_launcher", "mipmap", context.getPackageName());
Bitmap largeIconBitmap = BitmapFactory.decodeResource(res, largeIconResId);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
if (largeIconResId != 0) {
notificationBuilder.setLargeIcon(largeIconBitmap);
}
}
// Reject action
Intent rejectIntent = new Intent(ACTION_REJECT_CALL)
.putExtra(INCOMING_CALL_NOTIFICATION_ID, notificationId)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingRejectIntent = PendingIntent.getBroadcast(context, 1, rejectIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.addAction(0, "DISMISS", pendingRejectIntent);
// Answer action
Intent answerIntent = new Intent(ACTION_ANSWER_CALL);
answerIntent
.putExtra(INCOMING_CALL_NOTIFICATION_ID, notificationId)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingAnswerIntent = PendingIntent.getBroadcast(context, 0, answerIntent,
PendingIntent.FLAG_UPDATE_CURRENT);
notificationBuilder.addAction(R.drawable.ic_call_white_24dp, "ANSWER", pendingAnswerIntent);
notificationManager.notify(notificationId, notificationBuilder.build());
TwilioVoiceModule.callNotificationMap.put(INCOMING_NOTIFICATION_PREFIX+callInvite.getCallSid(), notificationId);
}
public void createMissedCallNotification(ReactApplicationContext context, CallInvite callInvite) {
SharedPreferences sharedPref = context.getSharedPreferences(PREFERENCE_KEY, Context.MODE_PRIVATE);
SharedPreferences.Editor sharedPrefEditor = sharedPref.edit();
/*
* Create a PendingIntent to specify the action when the notification is
* selected in the notification drawer
*/
Intent intent = new Intent(context, getMainActivityClass(context));
intent.setAction(ACTION_MISSED_CALL)
.putExtra(INCOMING_CALL_NOTIFICATION_ID, MISSED_CALLS_NOTIFICATION_ID)
.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
Intent clearMissedCallsCountIntent = new Intent(ACTION_CLEAR_MISSED_CALLS_COUNT)
.putExtra(INCOMING_CALL_NOTIFICATION_ID, CLEAR_MISSED_CALLS_NOTIFICATION_ID);
PendingIntent clearMissedCallsCountPendingIntent = PendingIntent.getBroadcast(context, 0, clearMissedCallsCountIntent, 0);
/*
* Pass the notification id and call sid to use as an identifier to open the notification
*/
Bundle extras = new Bundle();
extras.putInt(INCOMING_CALL_NOTIFICATION_ID, MISSED_CALLS_NOTIFICATION_ID);
extras.putString(CALL_SID_KEY, callInvite.getCallSid());
extras.putString(NOTIFICATION_TYPE, ACTION_MISSED_CALL);
/*
* Create the notification shown in the notification drawer
*/
NotificationCompat.Builder notification =
new NotificationCompat.Builder(context, VOICE_CHANNEL)
.setGroup(MISSED_CALLS_GROUP)
.setGroupSummary(true)
.setPriority(NotificationCompat.PRIORITY_DEFAULT)
.setVisibility(NotificationCompat.VISIBILITY_PUBLIC)
.setCategory(NotificationCompat.CATEGORY_MESSAGE)
.setSmallIcon(R.drawable.ic_call_missed_white_24dp)
.setContentTitle("Missed call")
.setContentText(callInvite.getFrom() + " called")
.setAutoCancel(true)
.setShowWhen(true)
.setExtras(extras)
.setDeleteIntent(clearMissedCallsCountPendingIntent)
.setContentIntent(pendingIntent);
int missedCalls = sharedPref.getInt(MISSED_CALLS_GROUP, 0);
missedCalls++;
if (missedCalls == 1) {
inboxStyle = new NotificationCompat.InboxStyle();
inboxStyle.setBigContentTitle("Missed call");
} else {
inboxStyle.setBigContentTitle(String.valueOf(missedCalls) + " missed calls");
}
inboxStyle.addLine("from: " +callInvite.getFrom());
sharedPrefEditor.putInt(MISSED_CALLS_GROUP, missedCalls);
sharedPrefEditor.commit();
notification.setStyle(inboxStyle);
// build notification large icon
Resources res = context.getResources();
int largeIconResId = res.getIdentifier("ic_launcher", "mipmap", context.getPackageName());
Bitmap largeIconBitmap = BitmapFactory.decodeResource(res, largeIconResId);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP && largeIconResId != 0) {
notification.setLargeIcon(largeIconBitmap);
}
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.notify(MISSED_CALLS_NOTIFICATION_ID, notification.build());
}