如何将Pending Intent与方法相关联

时间:2015-02-25 13:26:57

标签: android android-intent android-pendingintent

我尝试使用待定意图,我在网上阅读文档,示例和问题/答案。但我仍然对未决意图的可能性感到困惑。我发现的所有示例都使用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);
    }
}

1 个答案:

答案 0 :(得分:0)

那么当你说它不起作用时会发生什么?

在您的特定示例中,您正在调用已在运行的同一活动。因为你正在使用标志更新当前它只会刷新额外的东西。

以下是如何使用PendingIntents http://iserveandroid.blogspot.com/2011/03/how-to-launch-pending-intent.html

的一个很好的示例