从我的Android应用程序打开一个应用程序

时间:2012-10-10 10:31:54

标签: android android-intent

从我的应用程序我试图打开另一个,使用此代码:

package com.copag.lanceappli;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Intent;


public class LanceAppli extends Activity {


    public void LanceAppli() {

           try
            {
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addCategory("android.intent.category.LAUNCHER");
                intent.setComponent(new ComponentName("test.test.test","test.test.test.MainActivity"));
                startActivity(intent);
            }
            catch( ActivityNotFoundException e)
            {
                e.printStackTrace();
            }
            catch( Exception e)
            {
                e.printStackTrace();
            }

    }
   public  void main (String [] args) 
   {
       LanceAppli();
   }    
}

发生的事情是应用程序崩溃了......没有错误消息。

这是我得到的:

http://pastie.org/5030644

任何想法?

3 个答案:

答案 0 :(得分:2)

如果指定组件,则表示您使用显式意图。您不应在此案例类别中指定。试试吧:

public  void LanceAppli()
{  
   Intent intent = new Intent(Intent.ACTION_MAIN);
   intent.setComponent(new ComponentName("test.test.test","test.test.test.MainActivity"));
   startActivity(intent);
}

如果您需要运行Launcher intent,那么最好使用以下代码:

Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.package.address");
startActivity(launchIntent);

答案 1 :(得分:0)

尝试类似这样的事情,如果你得到了一个堆栈跟踪就会发布。

try
{
    Intent intent = new Intent(Intent.ACTION_MAIN);
    intent.addCategory("android.intent.category.LAUNCHER");
    intent.setComponent(new ComponentName("test.test.test","test.test.test.MainActivity"));
    startActivity(intent);
}
catch( ActivityNotFoundException e)
{
       e.printStackTrace();
}
catch( Exception e)
{
       e.printStackTrace();
}

答案 2 :(得分:0)

问题是我试图直接在构造函数上使用intent,正如David所说。所以我把它改成了:

package com.copag.lanceappli;

import android.app.Activity;
import android.content.ActivityNotFoundException;
import android.content.ComponentName;
import android.content.Intent;
import android.os.Bundle;

public class LanceAppli extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        try {
            Intent intent = new Intent(Intent.ACTION_MAIN);
            intent.addCategory("android.intent.category.LAUNCHER");
            intent.setComponent(new ComponentName("test.test.test","test.test.test.MainActivity"));
            startActivity(intent);
        } catch( ActivityNotFoundException e) {
            e.printStackTrace();
        } catch( Exception e) {
            e.printStackTrace();
        }
    }
}

因此,我将代码放入onCreate,因为它应该是正常工作的!