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 }

 

posted on 2021-09-22 11:06  EndlessShw  阅读(71)  评论(0)    收藏  举报