我有Service
查找数据库中的更改,然后根据某些因素通知用户。其中一个notification
有一个操作按钮,点击其中BroadcastReceiver
被触发并Activity.class
被打开。
以下是:
public class MyBroadcastReceiver extends BroadcastReceiver {
public MyBroadcastReceiver(){
super();
}
@Override
public void onReceive(final Context context, Intent intent) {
if (intent.getAction() != null && intent.getAction().equals(getString(R.string.broadcast_id_for_rating))) {
Intent resultIntent = new Intent(getBaseContext(), Activity.class);
resultIntent.putExtra("abc", "abc");
resultIntent.setType("text/plain");
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(resultIntent);
} else {
Toast.makeText(context, "Intent is null.", Toast.LENGTH_SHORT).show();
}
}
}
以下是我尝试接收来自此ViewHolder
的{{1}}课程的意图:
Activity.class
问题我已public class RModelClass extends AbstractItem<RModelClass, RModelClass.ViewHolder> {
public RModelClass() {}
@Override
public int getType() {
return R.id.recycler_view_r;
}
@Override
public int getLayoutRes() {
return R.layout.r_played;
}
@Override
public void bindView(final RModelClass.ViewHolder holder, List payloads) {
super.bindView(holder, payloads);
String abc;
Intent intent = new Intent();
if (intent.getExtras() != null) {
openForRating = intent.getExtras().getString("abc");
if (abc != null) {
Log.d("abc", "YO!!");
} else {
Log.d("abc", "NO!!");
}
} else {
Log.d("null", "INTENT!!");
}
}
protected static class ViewHolder extends RecyclerView.ViewHolder {
public ViewHolder(View itemView) {
super(itemView);
}
}
}
注销但无法接收意图。
请帮助我为什么会发生这种情况以及如何获得意图?
答案 0 :(得分:1)
您应该使用getApplicationContext()
中的BroadcastReceiver
来创建意图。
Intent resultIntent = new Intent(getApplicationContext(), Activity.class);
resultIntent.putExtra("abc", "abc");
resultIntent.setType("text/plain");
resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(resultIntent);
你在这一行也犯了错误
Intent intent = new Intent();
这是新的intent对象,您正在尝试从此Intent
对象获取值。
您必须从您的Android组件获取Intent,例如getIntent()
如果您在Fragment
班级或Adapter
,则分别使用getActvity().getIntent()
和((Activity)context).getIntent()
fragment
和Adapter
。
答案 1 :(得分:0)
为什么会发生这种情况
您创建了一个全新的Intent
对象:
Intent intent = new Intent();
然后你尝试在这个全新的Intent
对象上寻找额外内容:
if (intent.getExtras() != null) {
Intent
对象是全新的。它不会有任何额外的东西。
如何获得意图?
要获取用于创建活动的Intent
,请致电getIntent()
。