2012/12/19

Android 呼叫其他apk

看到網路上有蠻多這種文章,不過還是自己寫一下筆記
別人寫得我不一定看得懂,我寫得別人不一定看得懂XD


實做前必須要知道被呼叫的Class Package以及Class Name吧?
所以我們先開啟一個專案a,Name:Testa,Package:com.cyfang.testa
在開啟另一個專案b,Name:Testb,Package:com.cyfang.testb

先將以下Code貼到個別專案
public class Testa extends Activity {
    private Button button;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_testa);
        Toast.makeText(this, "這是A視窗", Toast.LENGTH_LONG).show();
        button = (Button) findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent("android.intent.action.MAIN");
                intent.setClassName("Package名稱",
                        "完整名稱含Package");
                intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK
                        | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);
                startActivity(intent);
                finish();
            }
        });
    }
}

接著我們來看看這個程式到底在做些什麼吧

這程式有一個Button,點擊按鈕會宣告一個Intent物件,當作是android.intent.action.MAIN

接著設定ClassName,第一個參數為Package,第二個參數為Name,下方舉的例子是用在Testa
ex:
intent.setClassName("com.example.testb","com.example.testb.Testb");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT);

接著設定標籤


將開啟的apk設定為新的工作,設定在當前視窗顯示

接著使用startActivity意圖啟動一個Activity,並且關閉程式


執行畫面如下:






參考資料:
http://www.javaworld.com.tw/jute/post/view?bid=26&id=268293
http://codaya.blogspot.tw/2011/03/androidaok.html