我尝试使用待定意图,我在网上阅读文档,示例和问题/答案。但我仍然对未决意图的可能性感到困惑。我发现的所有示例都使用NotificationManager,AlarmManager,Home Screen AppWidgetManager。
是否有方法/操作如何将自己的代码(函数,方法)与待处理的意图相关联?(因此,从应用程序A我可以发送具有待处理意图的意图,然后从B执行操作待定意图具有A)的权限和权利
如何将相关操作(功能/方法)与待定意图相关联?
App A(设置Pending intent并启动B)
Intent i = getPackageManager().getLaunchIntentForPackage("lubo.app_private_key_demo2");
i.setAction("testAction");
PendingIntent pi = PendingIntent.getActivity(this.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
try {
pi.send();
}
catch(PendingIntent.CanceledException ex){
//ERROR
}
App B(从额外内容中获取Pending intent并尝试调用send()),来自onCreate(..)方法:
Intent intent = getIntent();
String action = intent.getAction();
if(action.equals("testAction")){
PendingIntent pi = null;
pi = (PendingIntent) intent.getParcelableExtra("pendingIntent");
Toast.makeText(MainActivity.this, "Got intent from demo1", Toast.LENGTH_LONG).show();
if(pi != null){
try {
pi.send();
} catch (PendingIntent.CanceledException e) {
e.printStackTrace();
}
Toast.makeText(MainActivity.this, "I have pending intent ", Toast.LENGTH_LONG).show();
}
Log.d(TAG, "Got intent from demo1");
}
感谢。
已编辑的代码: 应用A:
Intent i = getPackageManager().getLaunchIntentForPackage("lubo.app_private_key_demo2");
i.setAction("testAction");
PendingIntent pi = PendingIntent.getActivity(this.getApplicationContext(), 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
try {
pi.send();
}
catch(PendingIntent.CanceledException ex){
//ERROR
}
App B:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = getIntent();
String action = intent.getAction();
if(action.equals("testAction")){
PendingIntent pi = null;
Toast.makeText(MainActivity.this, "Got intent from demo1", Toast.LENGTH_LONG).show();
Log.d(TAG, "Got intent from demo1" + alias);
}
}
答案 0 :(得分:0)
那么当你说它不起作用时会发生什么?
在您的特定示例中,您正在调用已在运行的同一活动。因为你正在使用标志更新当前它只会刷新额外的东西。
以下是如何使用PendingIntents http://iserveandroid.blogspot.com/2011/03/how-to-launch-pending-intent.html
的一个很好的示例