Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Android

Cách khởi chạy ứng dụng khác từ ứng dụng Android

Mở app khác bằng Package Name

Dùng PackageManager.getLaunchIntentForPackage(String packageName) để lấy Intent khởi chạy Activity chính của app khác. Cần xử lý trường hợp app không cài đặt (trả về null).

Layout: TextView clickable

<LinearLayout xmlns:android="https://schemas.android.com/apk/res/android"
    android:id="@+id/parent"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center"
    android:background="#33FFFF00">

    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Click để mở YouTube"
        android:textSize="18sp" />
</LinearLayout>

MainActivity.java

package com.example.myapplication;

import android.content.Intent;
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    private TextView textView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        textView = findViewById(R.id.text);
        LinearLayout parent = findViewById(R.id.parent);

        textView.setOnClickListener(v -> {
            // Package name của YouTube
            Intent launchIntent = getPackageManager().getLaunchIntentForPackage("com.google.android.youtube");
            if (launchIntent != null) {
                startActivity(launchIntent);
            } else {
                Toast.makeText(this, "YouTube chưa được cài đặt", Toast.LENGTH_LONG).show();
            }
        });
    }
}

Lưu ý quan trọng (Android 11+ / API 30+)

Cần khai báo <queries> trong AndroidManifest.xml để thấy package khác:

<manifest ...>
    <queries>
        <package android:name="com.google.android.youtube" />
    </queries>
    <application ...> ... </application>
</manifest>

Hoặc dùng <intent> filter nếu mở theo action (VIEW, SEND...).