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...).