启动第三方应用

时间:2011-08-01 15:27:55

标签: android android-intent

我正在尝试在选择确定按钮时启动第三方应用。我有以下代码,但它没有聚集在一起。我是这方面的新手,无法弄明白。

        public class Abc extends Activity {

static final String MARKET_SEARCH_Q_PNAME_ANDRIOS = "market://search?q=pname:com.3rdparty.app";



@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    setContentView(R.layout.getpft);
    setTitle("Install 3rd party app?");

    ((Button) findViewById(R.id.Ok)).setOnClickListener(new Openabc());
    ((Button) findViewById(R.id.FindIt)).setOnClickListener(new FindZxingOnclickListener());
}


public class Openabc implements OnClickListener {
    public void onClick(View v) {
        Intent i = new Intent("android.intent.action.MAIN");
        i.addCategory("android.intent.category.LAUNCHER");
        i.setPackage("com.3rdparty.app");
        startActivity(i);
    }}


public class FindZxingOnclickListener implements OnClickListener {
    public void onClick(View v) {
        Intent marketLaunch = new Intent(Intent.ACTION_VIEW);
        marketLaunch.setData(Uri.parse(MARKET_SEARCH_Q_PNAME_ANDRIOS));
        startActivity(marketLaunch);
    }}

}

2 个答案:

答案 0 :(得分:2)

简而言之,您没有正确构建意图。

Here是通过意图启动另一个活动的示例。需要特别注意的是他们构建意图的方式。

如果不知道你想要触及的意图的具体细节,我真的无法帮助,但这里有链接的内容:

    Intent intent = new Intent("com.3rdpartydev.abcapp.GO");
    intent.setPackage("com.3rdpartydev.abcapp");
    startActivity(intent);

这将告诉Android寻找知道如何处理com.3rdpartydev.abcapp.GO请求的内容,如果能够找到它,请启动它。

我建议重新阅读this以获取更多信息

答案 1 :(得分:1)

我暂时没有使用Android,但是快速查看文档,我认为这是问题所在:

你的类实际上不会做任何事情,因为它没有使用任何Android类(通过继承或组合)。创建Intent后,您将调用一个空方法,因此不会发生任何事情。最简单的方法是删除private void startActivity(Intent i)的定义,并将其他内容移至Activity类。如果需要,让该类实现OnClickListener,然后调用内置的startActivity方法。