没有开始新的通知操作 Activity?
Notification Action without starting new Activity?
我计划制作一个包含两个操作的提醒通知:一个是批准登录请求,一个是拒绝登录请求。通过单击这些操作中的任何一个,我希望向我的服务器发出 HTTP 请求,最重要的是不想启动新的 Activity 或根本不想让用户重定向到我的应用程序。
Context context = getBaseContext();
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.notificationicon)
.setContentTitle(notificationTitle)
.setContentText("Access Request for " + appName + " : " + otp)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.addAction(R.drawable.ic_tick, "Approve", someApproveIntent? );
这是我的通知生成器,环顾四周后,addAction 方法似乎正在寻找一个 new/pendingIntent,这让我很困惑,因为我在网上找不到任何 Intents 不会导致新 Activities 的例子开火了。
我将如何实现一些代码(可能是一种方法)而不是在我的每个 Action 上启动一个新的 Activity?
如果您不想开始一个 activity,您也可以将 BroadcastReceiver
或 Service
直接包装在 PendingIntent
.
中
无论您在哪里构建通知...
您的通知操作将直接启动服务。
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)...
Intent iAction1 = new Intent(context, MyService.class);
iAction1.setAction(MyService.ACTION1);
PendingIntent piAction1 = PendingIntent.getService(context, 0, iAction1, PendingIntent.FLAG_UPDATE_CURRENT);
builder.addAction(iconAction1, titleAction1, piAction1);
// Similar for action 2.
MyService.java
IntentServices 运行 接连不断。他们在工作线程上完成工作。
public class MyService extends IntentService {
public static final String ACTION1 = "ACTION1";
public static final String ACTION2 = "ACTION2";
@Override
public void onHandleIntent(Intent intent) {
final String action = intent.getAction();
if (ACTION1.equals(action)) {
// do stuff...
} else if (ACTION2.equals(action)) {
// do some other stuff...
} else {
throw new IllegalArgumentException("Unsupported action: " + action);
}
}
}
AndroidManifest.xml
不要忘记在清单中注册服务。
<manifest>
<application>
<service
android:name="path.to.MyService"
android:exported="false"/>
</application>
</manifest>
我计划制作一个包含两个操作的提醒通知:一个是批准登录请求,一个是拒绝登录请求。通过单击这些操作中的任何一个,我希望向我的服务器发出 HTTP 请求,最重要的是不想启动新的 Activity 或根本不想让用户重定向到我的应用程序。
Context context = getBaseContext();
NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
.setSmallIcon(R.mipmap.notificationicon)
.setContentTitle(notificationTitle)
.setContentText("Access Request for " + appName + " : " + otp)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.addAction(R.drawable.ic_tick, "Approve", someApproveIntent? );
这是我的通知生成器,环顾四周后,addAction 方法似乎正在寻找一个 new/pendingIntent,这让我很困惑,因为我在网上找不到任何 Intents 不会导致新 Activities 的例子开火了。
我将如何实现一些代码(可能是一种方法)而不是在我的每个 Action 上启动一个新的 Activity?
如果您不想开始一个 activity,您也可以将 BroadcastReceiver
或 Service
直接包装在 PendingIntent
.
无论您在哪里构建通知...
您的通知操作将直接启动服务。
NotificationCompat.Builder builder = new NotificationCompat.Builder(context)...
Intent iAction1 = new Intent(context, MyService.class);
iAction1.setAction(MyService.ACTION1);
PendingIntent piAction1 = PendingIntent.getService(context, 0, iAction1, PendingIntent.FLAG_UPDATE_CURRENT);
builder.addAction(iconAction1, titleAction1, piAction1);
// Similar for action 2.
MyService.java
IntentServices 运行 接连不断。他们在工作线程上完成工作。
public class MyService extends IntentService {
public static final String ACTION1 = "ACTION1";
public static final String ACTION2 = "ACTION2";
@Override
public void onHandleIntent(Intent intent) {
final String action = intent.getAction();
if (ACTION1.equals(action)) {
// do stuff...
} else if (ACTION2.equals(action)) {
// do some other stuff...
} else {
throw new IllegalArgumentException("Unsupported action: " + action);
}
}
}
AndroidManifest.xml
不要忘记在清单中注册服务。
<manifest>
<application>
<service
android:name="path.to.MyService"
android:exported="false"/>
</application>
</manifest>