1. 跳转第三方用隐式意图,应用内跳转用显式意图
1 package com.example.activitydemo; 2 3 import android.app.Activity; 4 import android.content.ComponentName; 5 import android.content.Intent; 6 import android.os.Bundle; 7 import android.util.Log; 8 import android.view.View; 9 10 import androidx.annotation.Nullable; 11 12 public class SkipToBrowserActivity extends Activity { 13 14 private static final String TAG = "SkipToBrowserActivity"; 15 16 @Override 17 protected void onCreate(@Nullable Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_skiptobrowser); 20 } 21 22 /** 23 * 在按钮被点击时执行该方法,跳转到浏览器中 24 * cmp(componentName)=com.android.chrome/com.google.android.apps.chrome.Main 25 * cmp就是"包名/类的全路径名称(类所用的包名+类名)",如果类所用的包名与/前的包名一致,则可以用.来代替类所用的包名 26 * 用显式意图跳转第三方软件的缺点在于,若以后软件的包名和类名发生更改,那么就无法跳转 27 * @param view 点击的button 28 */ 29 public void visibleSkipToBrowser(View view){ 30 Log.d(TAG, "SkipToBrowser"); 31 32 33 Intent intent = new Intent(); 34 // 第一种写法: 35 // intent.setClassName("com.android.chrome", "com.google.android.apps.chrome.Main"); 36 // 第二种写法: 37 ComponentName componentName = new ComponentName("com.android.chrome", "com.google.android.apps.chrome.Main"); 38 intent.setComponent(componentName); 39 startActivity(intent); 40 } 41 42 /** 43 * 通过隐式意图跳转到浏览器界面 44 * 步骤: 45 * 1. 创建Intent对象 46 * 2. 给这个Intent对象设置Package,Action,添加它的category,如果Android系统大于5.1,就需要设置包名 47 * 3. startActivity方法跳转界面 48 * 对于action和category,如果是安卓系统的上层软件,可以通过下载官方的应用源码,然后查找具体软件的manifest文件来找到;如果是第三方软件,可以尝试抓取数据包 49 * @param view 50 */ 51 public void invisibleSkipToBrowser(View view){ 52 Intent intent = new Intent(); 53 intent.setAction("android.intent.action.SEARCH"); 54 intent.setPackage("com.android.browser"); 55 intent.addCategory("android.intent.category.DEFAULT"); 56 startActivity(intent); 57 } 58 }
浙公网安备 33010602011771号