精华内容
下载资源
问答
  • 核心: 类似安卓隐式Intent启动 用法如下: 1. Web页面或分享页面包含一个url链接 <a href="appname://com.example.demo/main" /> 或者 <a href="appname://com.example.demo/main?name=csdn&age=5" /...

    Google官方教程讲解点击这里

    情景: 通过浏览器或分享链接唤起应用
    核心: 类似安卓隐式Intent启动
    用法如下:

    1. Web页面或分享页面包含一个url链接
    <a href="appname://com.example.demo/main">点击打开</a>
    

    或者

    <a href="appname://com.example.demo/main?name=csdn&age=5">点击打开</a>
    

    😃 回顾一下Uri格式

    <scheme> :// <host> : <port> / [<path> | <pathPrefix> | <pathPattern>]
    
    2. AndroidManifest.xml文件中对响应的activity进行配置
    <activity 
    	android:name=".SecondActivity"
    	android:exported="true">
    	<intent-filter>
    		<action android:name="android.intent.action.VIEW" />
    		<category android:name="android.intent.category.DEFAULT" />
    		<category android:name="android.intent.category.BROWSABLE" />
    		<!-- Accepts URIs that begin with "appname://com.example.demo/main” -->
    		<data 
    			android:scheme="appname"
    			android:host="com.example.demo"
    			android:pathPrefix="/main" />
    		<!-- note that the leading "/" is required for pathPrefix-->
    	</intent-filter>
    </activity>
    
    3. Activity生命周期中处理Intent响应
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    
        Intent intent = getIntent();
        String action = intent.getAction();
        Uri data = intent.getData();
    
    	if (data != null) {
    	    String scheme = data.getScheme(); // "appname"
    	    String host = data.getHost(); // "com.example.demo"
    	    String name = data.getQueryParameter("name"); // "csdn"
    	    String age= data.getQueryParameter("age");  // "5"
    	}
    }
    
    4. 检验DeepLink是否有效

    可自定义一个网页,通过链接进行测试;
    也可以利用命令行进行测试:

    $ adb shell am start
            -W -a android.intent.action.VIEW
            -d <URI> <PACKAGE>
    
    展开全文
  • 安卓的deepLink实现方式

    千次阅读 2017-08-14 17:55:40
    这个方法基本上在安卓或者IOS上都通用,不过IOS仅限IOS8及以下,IOS9以上已经不支持iframe唤起APP,不过可以通过location=" schemeURL "的方式来唤起,下面我们展示以下安卓开发方面的配置: Android清单文件中...

    最近碰到了一个新的需求,用户在浏览器中打开分享出去的内容,如果该用户设备上有我们的客户端则打开客户端并且定位到当前文章,如果没有的话则进行下载。调研过程中遇到了不少的坑,这里share一下。

    html源码
    
    <!doctype html>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
    
            <meta name="apple-mobile-web-app-capable" content="yes">
            <meta name="apple-mobile-web-app-status-bar-style" content="black"/>
    
            <title>this's a demo</title>
            <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,minimal-ui">
        </head>
        <body>
            <div>
                <a id="J-call-app" href="javascript:;" class="label">立即打开&gt;&gt;</a>
                <input id="J-download-app" type="hidden" name="storeurl" value="http://m.chanyouji.cn/apk/chanyouji-2.2.0.apk">
            </div>
    
            <script>
                (function(){
                    var ua = navigator.userAgent.toLowerCase();
                    var t;
                    var config = {
                        /*scheme:必须*/
                        scheme_IOS: 'will://',
                        scheme_Adr: 'will://share/testid',
                        download_url: document.getElementById('J-download-app').value,
                        timeout: 600
                    };
                    function openclient() {
                        var startTime = Date.now();
                        var ifr = document.createElement('iframe');
                        ifr.src = ua.indexOf('os') > 0 ? config.scheme_IOS : config.scheme_Adr;
                        ifr.style.display = 'none';
                        document.body.appendChild(ifr);
                        var t = setTimeout(function() {
                            var endTime = Date.now();
                            if (!startTime || endTime - startTime < config.timeout + 200) { 
                                window.location = config.download_url;
                            } else {
    
                            }
                        }, config.timeout);
                        window.onblur = function() {
                            clearTimeout(t);
                        }
                    }
                    window.addEventListener("DOMContentLoaded", function(){
                        document.getElementById("J-call-app").addEventListener('click',openclient,false);
                    }, false);
                })()
            </script>
        </body>
    </html>
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42
    • 43
    • 44
    • 45
    • 46
    • 47
    • 48
    • 49
    • 50
    • 51
    • 52
    • 53
    • 54
    • 55

    基本思路:点击“立即打开“按钮后如果在600毫秒后仍然没有打开客户端则跳到下载链接;这里大家可以任意改造,例如如果在指定时间之内没有吊起客户端,则打开详情页面等。这个方法基本上在安卓或者IOS上都通用,不过IOS仅限IOS8及以下,IOS9以上已经不支持iframe唤起APP,不过可以通过location="schemeURL"的方式来唤起,下面我们展示以下安卓开发方面的配置:

    Android清单文件中加入以下代码
     <!-- 一定要在清单文件中加入下面的intent filter !!!!!!!-->
            <activity android:name=".DeepLinkActivity">
                <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:host="share"
                        android:scheme="will" />
                </intent-filter>
            </activity>
    
    **!!!!!注意:data中的host与scheme都要写上才会生效**
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    在Activity中接受数据:
        /**
         * 从deep link中获取数据
         */
        private void getDataFromBrowser() {
            Uri data = getIntent().getData();
            try {
                scheme = data.getScheme(); // "will"
                host = data.getHost(); // "share"
                params = data.getPathSegments();
                String testId = params.get(0); // "uuid"
                tv_data.setText("Scheme: " + scheme + "\n" + "host: " + host + "\n" + "params: " + testId);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    好了这样就可以实现在浏览器中打开本地app(DeepLink)了,有的同学会问,这种方式的适配性如何?由于手头机型有限,这里列举一下楼主测试过的机型与浏览器。 
    所测机型
    由于机型与精力所限,不能覆盖更多的机型了。请大家补充下哈。祭上官方文档 
    https://developer.android.com/training/app-indexing/deep-linking.html#adding-filters


    上面的文章是通过浏览器打开客户端 
    后期的文章我会详细介绍native与h5的联调中所踩的坑。这里先介绍一种极其简单的方式供大家把玩。

    html中加入一个超链接    <a id="J-call-app" href="will://share/testId" class="label">立即打开&gt;&gt;</a>
    • 1
    • 1
    public class MainActivity extends AppCompatActivity {
    
        WebView web_main;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            web_main = (WebView) findViewById(R.id.web_main);
    
            web_main.loadUrl("file:///android_asset/h5.html");
    
            web_main.setWebViewClient(new WebViewClient() {
                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url) {
    
                    if (url.startsWith("will://")) {
                        Uri uri = Uri.parse(url);
                        Log.e("---------scheme: ", uri.getScheme() + "host: " + uri.getHost() + "Id: " + uri.getPathSegments().get(0));
                        Toast.makeText(MainActivity.this, "打开新的页面", Toast.LENGTH_LONG).show();
                        return true; //返回true,代表要拦截这个url
                    }
                    return super.shouldOverrideUrlLoading(view, url);
                }
            });
        }
    }

    展开全文
  • 安卓操作MySql数据库时报错Communications link failure解决方案 报错信息:Communications link failure 解决方案: 1. 检查是否在安卓工程文件中写了申请网络权限 <uses-permission android:name="android....

    安卓操作MySql数据库时报错Communications link failure解决方案

    报错信息:Communications link failure

    解决方案:

    1. 检查是否在安卓工程文件中写了申请网络权限

    <uses-permission android:name="android.permission.INTERNET"/>
    

    2. 检查数据库的IP地址有没有写对

    此IP地址应为MySql数据库所在电脑连接的局域网所分配的IPV4地址
    

    3. 检查连接数据库的url有没有写错

    正确的格式应为:jdbc:mysql://192.168.7.25(2条中提到的IP地址 ):3306/dbName( 数据库名字 )
    

    4. 检查导入的jar包是否正确

    mysql-connector-java-5.1.30-bin.jar
    其中有5.18.0的版本
    各版本对MySql的不同版本也会有不同的支持
    

    5. 检查开启数据库的函数是否是写在另一个线程中的

    现在安卓的主线程好像不允许有开启数据库的操作
    所以只要另开线程,然后把开启数据库的操作写那里面就可以了
    new Thread(new Runnable() {
    	@Override
    	public void run(){
    		//这里写涉及到开启数据库操作的业务代码
    	}
    }).start();
    

    顺便Before start of result set报错解决方案

    ResultSet rs=null;
    
    rs=........
    
    要在这里加入while(rs.next()){
    
    .............    
    
      }
    

    解释:因为ResultSet是一个结果集,要想读出来的话,必须要使用next方法才行!

    展开全文
  • 在项目的目录下,用终端执行: 第一步 cd node_modules/react-native/scripts ./ios-install-third-party.sh 第二步 (可以解决:third-party: ‘config.h’ file not found问题) cd node_modules/react-native/third...

    在项目的目录下,用终端执行:

    第一步
    cd node_modules/react-native/scripts
    ./ios-install-third-party.sh

    第二步 (可以解决:third-party: ‘config.h’ file not found问题)
    cd node_modules/react-native/third-party/glog-0.3.5/
    …/…/scripts/ios-configure-glog.sh

    展开全文
  • 代码结构 js unicorn.js 核心JS代码,控制H5页面的返回相关能力 pages 对应页面的两个两个页面 index index1 static
  • 安卓的adb shell中,没有cp命令,使用mv文件的时候出现cross-device link错误: # mv /sdcard/tcpdump /data/local/tcpdump failed on '/sdcard/tcpdump' - Cross-device link 出现...
  • Anlink前言一、Anlink是什么?二、使用步骤1.下载软件2.安装软件3.如何连接手机4.控制手机的基本操作总结 前言 从苹果 Mac + iPhone 的接力/通用剪贴板,到华为的多屏协同,越来越多人意识到手机和电脑之间的交互如...
  • 如果你的安卓手机内存太小,不够用怎么办?用这个软件就可以把内存扩展到TF卡上,不过之前要先给你的TF卡分区哦。
  • Vue路由在Android机上有问题,babel问题,安装babel polypill插件解决。
  • 具体遇到了CANNOT LINK EXECUTABLE:" ":cannot locate symbol "fwrite_unlocked" referenced by "* .so"错误,出现的是内核函数找不到符号,在Application.mk中将APP_PLATFORM := android-25(25代表安卓7.1,其他...
  • SmartLink是做什么的?如果使用过wifi监控摄像头的人应该都知道,比如小米出品的小蚁智能摄像机 YHS-113,之前恰好买了一个,还挺好用的,100多,也不算贵。它里面就集成了SmartLink,使得首次安装摄像头时,接通...
  • 安卓

    2015-02-10 22:26:00
    1.data/misc/wifi/ wpa_supplicant.conf:可搜索到手机... network={ ssid="TPLINK"(你的Wi—Fi账号) psk="123456789"(该账号的密码) key_mgmt=WPA-PSK priority=1 } 转载于:https://www.cnblogs.com/jsnow...
  • 我们都玩过绝地求生这款游戏,他在Steam平台发布,...Steam在2018年推出了“Steam Link App”,它支持安卓和苹果系统,并且现在是免费提供下载的。它们可以通过Steam电脑端游戏传输到移动端或者电视机上,今天我...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 543
精华内容 217
关键字:

安卓link