Android基础知识(二)-----Intent如何打开外部程序

时间:2022-06-09 15:33:34

一 : 问题描述

Intent如何打开外部程序?setClassName和 setComponent有什么区别?

二 : 解决方案

方案一setClassName,以onClick点击事件为例。

public void onClick(View v){

    //最常用常用的写法
    new Intent();
    intent.setClassName("com.android.systemui","com.android.systemui.SystemUIService");
    startActivity(intent);
}

方案二代码来自frameworks/base/services/java/com/android/server/SystemServer.java

    static final void startSystemUi(Context context) {
        Intent intent = new Intent();
        intent.setComponent(new ComponentName("com.android.systemui",
                    "com.android.systemui.SystemUIService"));
        intent.addFlags(Intent.FLAG_DEBUG_TRIAGED_MISSING);
        //Slog.d(TAG, "Starting service: " + intent);
        context.startServiceAsUser(intent, UserHandle.SYSTEM);
    }

两种方法都可以通过Intent打开外部程序,实际上setClassName内部也是调用的setComponent。