笔记:APP的跳转第三方应用

1、App跳转到谷歌商店

public class TiaoZhuan extends AppCompatActivity implements View.OnClickListener  {
    //首先我们必须要知道要跳转的app的包名,每一个APP的包名都是独立的,纵使是马甲包和主包的包名也是不一样的。
    //我们将要跳转的包名填在以下位置。

    public static final String APP_PACKAGE_NAME = "com.daiba.wsjr1";
    private Button bt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tiao_zhuan);
        //在布局中写一个button按钮,在这里初始化。
        bt = (Button) findViewById(R.id.bt_call);
        //为按钮设置监听
        bt.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
    //监听被触发是启动跳转的方法。
        launchapp(this);
    }
    //跳转页面的方法
    private void launchapp(Context context) {
    //判断当前手机是否有要跳入的app
        if (isAppInstalled(context,APP_PACKAGE_NAME)){
    //如果有根据包名跳转  
          context.startActivity(context.getPackageManager().getLaunchIntentForPackage(APP_PACKAGE_NAME));
        }else{
        //如果没有,走进入系统商店找到这款APP,提示你去下载这款APP的程序
            goToMarket(context, APP_PACKAGE_NAME);
        }
    }
//这里是进入应用商店,下载指定APP的方法。
    private void goToMarket(Context context, String packageName) {
        Uri uri = Uri.parse("market://details?id=" + packageName);
        Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri);
        try {
            context.startActivity(goToMarket);
        } catch (Exception e) {
        }
    }
//这里是判断APP中是否有相应APP的方法
    private boolean isAppInstalled(Context context, String packageName) {
        try {
            context.getPackageManager().getPackageInfo(packageName,0);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }
}


//                //前提:知道要跳转应用的包名、类名,如:
//                ComponentName componentName = new ComponentName("com.xxx.xxx.xxx", "com.xxx.xxx.xxx.MainActivity");
//                intent.setComponent(componentName);

2、在浏览器中点击链接地址开启App

①、H5准备

一般来说这个跳转地址是H5端做的,现在我们没有,所以自己准备了一个

<html>
<meta charset="UTF-8">
<body>
<h1>Test Scheme</h1> <!--自动加载隐藏页面跳转-->
  <!--手动点击跳转-->
  <a href="hahaha.com://https://m.asia5b.com/goods.php?id=376320">点击打开APP并将id的值传过去</a>
</body>
</html>
②、在AndroidManifest.xml中

在需要启动的manifest文件中,当网页拉启App时要打开的activity的里面添加下面的过滤条件

       <activity
         android:name=".SplashActivity"
            android:screenOrientation="portrait"
            android:theme="@style/AppTheme">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

            <!--======我们H5端需要通过连接跳转到我们的App========-->
            <intent-filter>
                <action android:name="android.intent.action.VIEW"/>
                <category android:name="android.intent.category.DEFAULT"/>
                <category android:name="android.intent.category.BROWSABLE"/>
                <data
                    android:scheme="hahaha.com"/>
                <!--hahaha.com  是我们要过滤的条件 网页链接的scheme 当然还有port等,这里只用scheme ,还有这里虽然是可以随意定义,但一定要跟H5跳转地址的scheme一样才能拉启我们的App-->
            </intent-filter>
            <!--======我们H5端需要通过连接跳转到我们的App========-->
        </activity>
③、数据接收

在需要启动的activity中

Intent intent = getIntent();
Uri uri = intent.getData();
if(uri!=null){
  Log.e("从网页接收的数据===",uri.toString());
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容