intent

通过 URL 打开 Activity

跟風遠走 提交于 2020-02-09 20:57:52
为每个 Activity 绑定一个 url 可以方便的让第三方 app 直接打开这些 Activity。也可以方便在 app 内部进行页面跳转,解耦。 背景 举一个常见的案例,假设我们有个产品 A,产品 A 包含 h5 网页端和客户端,当用户在手机打开我们的 h5 网页端的时候,我们会期望如果用户手机安装了我们的客户端,则直接打开 app,否则停留在网页端浏览。 这是一个很常见的需求,但是实现需要 h5 和 Android 的配合,本文会先说下原理,然后单独描述 Android 端需要做的事情,最后会给一个链接说明 h5 的工作。 原理 Android 端先给 Activity 绑定一个 url ,比如说是 myapp://main . 用户访问 http://myapp.com 网页时,h5 尝试访问 myapp://main ,如果用户安装了客户端,则会打开相应的 Activity,否则会继续留在 h5 浏览网页。 那么,如何给 Activity 绑定一个 url 是在 Android 端的关键。 Android 实现 创建一个空的 ViewActivity. public class ViewActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) {

Android 通过浏览器打开应用

末鹿安然 提交于 2020-02-09 20:54:58
  在很多应用的web站,其实都有这样一个功能,就是直接在网页中打开应用,接下来的就来探讨一下这个功能的实现,有些地方也我还没弄明白,还请懂的大神指点。   首先,得说一点不好消息,在微信中,这样的方式是行不通的,因为微信把这种Intent(这个功能本身也就是一个Intent)给干掉了;   首先来看一段代码: <intent-filter> <action android:name="android.intent.action.VIEW" /> <data android:scheme="test.target" /> <data android:host="my.com" /> <data android:port=":6060" /> <data android:path="/hello0" /> <data android:pathPrefix="/hello"/> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.BROWSABLE" /> </intent-filter> 这段代码的意思也就是说,在系统中注册了一个Intent,这个Intent能干什么呢?有什么功能呢? action

Zxing库

百般思念 提交于 2020-02-09 03:24:32
一.介绍   Zxing是一个开放的源码,用java实现的多种样式的1D/2D条码处理库,它包含了联系到其他语言的端口。Zxing可以实现手机的内置摄像头完成条码的扫描及解码。目前支持:UPC-A ,UPC-E ,EAN-8 ,EAN-13 ,39 码,93码。 二.Zxing库的主要类   1.CaptureActivity :启动Activity,也就是扫描器   2.CaptureActivityHandler :解码处理器,负责调用另外的线程进行解码   3.DecodeThread :解码线程   4.com.google.zxing.client.android.camera包:摄像头调用包   5.ViewfinderView :自定义的View,就是我们看到的拍摄中间的框框 三. 使用Zxing生成二维码 //Edited by mythou //http://www.cnblogs.com/mythou/   //要转换的地址或字符串,可以是中文 public void createQRImage(String url) { try { //判断URL合法性 if (url == null || "".equals(url) || url.length() < 1) { return; } Hashtable<EncodeHintType, String>

android之Activity的创建与关闭

Deadly 提交于 2020-02-06 23:46:59
Activity的启动和关闭 1.启动activity activity的启动分为两种,一种为入口activity,另一种为其他activity 在AndroidManifests进行配置,入口activity的启动只要在要启动的activity里加入intent,例如下面代码将MainActivity作为入口Activity <activity android:name=".MainActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> 那其他activity如何启动呢? 答案是:startActivity来进行启动,通过intent对象获得要启动的activity,再进行启动。 psw.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this,ForgetpswActivity.class);

寒假学习进度五——活动之间的跳转以及数据的传递

我们两清 提交于 2020-02-06 00:08:08
前几天学习了安卓的界面,今天想着学习下页面的跳转。 活动(Activity)是最容易吸引用户的地方,它是一种可以包含用户界面的组件,主要用于和用 户进行交互。 活动由布局文件,Java文件两部分,活动首先要在AndroidManifest.xml中进行注册,之后再由Java文件调用setContentView(R.layout.XXX)方法加载页面布局。 平常的活动注册:<activity android:name=".FirstActivity"></activity>即可,intent过滤可加可不加。 主活动必需按照固定格式进行编写。 <activity android:name=".Firstactivity"> <!-- mamifest已经指定包名了,可以缩写。 --> <intent-filter> <action android:name="android.intent.action.MAIN" /> <!-- 表示这个activity是主入口,换句话说, 你只要启动这个应用程序,就要首先调用这个activity --> <category android:name="android.intent.category.LAUNCHER" /> <!-- 即应用程序会列在Launcher(home,手机屏幕)中,允许用户直接启动 --> </intent-filter><

Android中的Service基础

寵の児 提交于 2020-02-05 12:31:22
Service主要用于后台程序和跨进程访问,可以在不显示界面的前提下完成任务,不影响用户的其他操作。 这里我展示一些基本的用法 新建一个Service类 package com.example.service; import android.app.Service; import android.content.Intent; import android.os.Binder; import android.os.IBinder; import android.widget.Toast; public class MyService extends Service { private IBinder myBinder=new Binder(){ public String getInterfaceDescriptor(){ return "MyServerceUtil class."; } }; public IBinder onBind(Intent intent)//绑定时触发 { Toast.makeText(getApplicationContext(),"服务绑定",Toast.LENGTH_SHORT).show(); return myBinder; } public void onRebind(Intent intent)//重新绑定时触发 { super

android事件

你。 提交于 2020-02-05 11:26:47
1.onclick的3种用法android:gravity=“center”(居中) Button btn = findViewById(R.id.button); textView1 = findViewById(R.id.textView); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { textView1.setText(“你好”); } }); 2.Android Intent的详细解析以及用法(Intent的中文意思为“意图") *显示网页 Uri uri = Uri.parse(“http://www.google.com”); Intent it = new Intent(Intent.ACTION_VIEW,uri); startActivity(it); *显示地图 Uri uri = Uri.parse(“geo:38.899533,-77.036476”); Intent it = new Intent(Intent.Action_VIEW,uri); startActivity(it); 路径规划: Uri uri = Uri.parse(“http://maps.google.com/maps?f=d&saddr

Android包名和ApplicationId的区别

帅比萌擦擦* 提交于 2020-02-05 09:44:04
包名:如com.sun.gradledemo就是代码存储的位置、空间。java文件夹下放的是java代码,res文件夹下放的是资源文件,包名就是分门别类的放置代码的一个存储空间。 应用ID:applicationId是Android应用的唯一标识,Google Play和其他的应用商店就是根据这个应用ID来区分是不是一个新的应用程序。 android系统提供的一些api方法,比如Context.getPackageName()方法返回的是应用ID,而不是包名 this.getPackageManager().getLaunchIntentForPackage(“应用程序ID”) 说到getLaunchIntentForPackage,这个api获取的是android apk的默认入口 android Intent拉取方式分为显示调用和隐式调用 显示调用: Intent intent = new Intent(this,MainActivity.class); 隐式调用:Intent intent = new Intent(“com.launcher.action”); 不过这种隐式这种方式需要在AndroidMainfest注册信息 <intent-filter> <action android:name="com.launcher.action"/> <category

判断当前是wifi 还是网络

点点圈 提交于 2020-02-05 07:38:34
//判断当前是wifi 还是网络 public static boolean checkNetworkConnection(Context context) { final ConnectivityManager connMgr = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); final android.net.NetworkInfo wifi =connMgr.getNetworkInfo(ConnectivityManager.TYPE_WIFI); final android.net.NetworkInfo mobile =connMgr.getNetworkInfo(ConnectivityManager.TYPE_MOBILE); if(wifi.isAvailable()||mobile.isAvailable()) return true; else return false; } public class extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { State wifiState = null; State

网络判断的监听器

房东的猫 提交于 2020-02-04 19:28:14
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 /** * 监听网络是否正常连接 * * @author Cyning * */ private class ConnectionChangeReceiver extends BroadcastReceiver { private final String TAG = ConnectionChangeReceiver. class .getSimpleName(); @Override public void onReceive(Context context, Intent intent) { ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo mobNetworkInfo = connectivityManager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE);