android 读取手机信息

本文介绍如何在Android应用中集成第三方地图服务,并通过指定的API传递数据,同时检查应用是否已安装所需的地图应用,若未安装则引导用户前往应用市场下载。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  1. 检查软件包有没有安装过:
  2. package com.example.myapi.thirdbaidumap;  
  3.   
  4. import java.net.URISyntaxException;  
  5. import java.util.ArrayList;  
  6. import java.util.List;  
  7.   
  8. import android.app.Activity;  
  9. import android.content.Context;  
  10. import android.content.Intent;  
  11. import android.content.pm.PackageInfo;  
  12. import android.content.pm.PackageManager;  
  13. import android.net.Uri;  
  14. import android.os.Bundle;  
  15. import android.util.Log;  
  16. import android.view.View;  
  17. import android.view.View.OnClickListener;  
  18. import android.widget.Button;  
  19.   
  20. import com.example.myapi.R;  
  21.   
  22. /** 
  23.  * 测试程序跳转到第三方地图,并将数据传递过去。 
  24.  * @author tony 
  25.  * 
  26.  */  
  27. public class ThirdBaiduMapTestActivity extends Activity implements OnClickListener{  
  28.     private Button btn_test;  
  29.     @Override  
  30.     protected void onCreate(Bundle savedInstanceState) {  
  31.         super.onCreate(savedInstanceState);  
  32.         setContentView(R.layout.thirdbaidumaptest);  
  33.         btn_test = (Button)findViewById(R.id.baidu_btn_test);  
  34.         btn_test.setOnClickListener(this);  
  35.     }  
  36.   
  37.     @Override  
  38.     public void onClick(View v) {  
  39.         switch(v.getId()){  
  40.         case R.id.baidu_btn_test:  
  41.             //如果已安装,  
  42.               
  43.             if(isAvilible(this,"com.baidu.BaiduMap")){//传入指定应用包名  
  44.                 Intent intent = null;  
  45.                 try {  
  46. //                    intent = Intent.getIntent("intent://map/direction?origin=latlng:34.264642646862,108.95108518068|name:我家&destination=大雁塔&mode=driving®ion=西安&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");  
  47.                     intent = Intent.getIntent("intent://map/direction?" +  
  48.                             "origin=大柏树&" +  
  49.                             "destination=江湾镇" +  
  50.                             "&mode=driving&" +  
  51.                             "region=上海市" +  
  52.                             "&src=yourCompanyName|yourAppName#Intent;scheme=bdapp;package=com.baidu.BaiduMap;end");  
  53.                     startActivity(intent); //启动调用  
  54.                 } catch (URISyntaxException e) {  
  55.                     Log.e("intent", e.getMessage());  
  56.                 }  
  57.             }else{//未安装  
  58.                 //market为路径,id为包名  
  59.                 //显示手机上所有的market商店  
  60.                 Uri uri = Uri.parse("market://details?id=com.baidu.BaiduMap");  
  61.                 Intent intent = new Intent(Intent.ACTION_VIEW, uri);   
  62.                 startActivity(intent);   
  63.             }  
  64.             break;  
  65.         }  
  66.     }  
  67.     /** 
  68.      * 检查手机上是否安装了指定的软件 
  69.      * @param context 
  70.      * @param packageName:应用包名 
  71.      * @return 
  72.      */  
  73.     private boolean isAvilible(Context context, String packageName){   
  74.         //获取packagemanager   
  75.         final PackageManager packageManager = context.getPackageManager();  
  76.       //获取所有已安装程序的包信息   
  77.         List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);  
  78.       //用于存储所有已安装程序的包名   
  79.         List<String> packageNames = new ArrayList<String>();  
  80.         //从pinfo中将包名字逐一取出,压入pName list中   
  81.         if(packageInfos != null){   
  82.             for(int i = 0; i < packageInfos.size(); i++){   
  83.                 String packName = packageInfos.get(i).packageName;   
  84.                 packageNames.add(packName);   
  85.             }   
  86.         }   
  87.       //判断packageNames中是否有目标程序的包名,有TRUE,没有FALSE   
  88.         return packageNames.contains(packageName);  
  89.   }   
  90.   
  91. }


  92. 获取手机信息:
  93.  
    1. private ArrayList<SamContact> getAllContacts()  
    2.     {  
    3.         ArrayList<SamContact> arrayList = new ArrayList<SamContact>();  
    4.         //获取本机联系人  
    5.         Cursor cur = getContentResolver().query(    
    6.                 ContactsContract.Contacts.CONTENT_URI,    
    7.                 null ,    
    8.                 null ,    
    9.                 null ,    
    10.                 ContactsContract.Contacts.DISPLAY_NAME    
    11.                         + " COLLATE LOCALIZED ASC" );  
    12.         if(cur.moveToFirst())  
    13.         {  
    14.             do{  
    15.                 SamContact samContact = new SamContact();  
    16.                 samContact.isChoosed = false;  
    17.                 int  idColumn = cur.getColumnIndex(ContactsContract.Contacts._ID);    
    18.                 int  displayNameColumn = cur.getColumnIndex(ContactsContract.Contacts.DISPLAY_NAME);  
    19.                 // 获得联系人的ID号     
    20.                 String contactId = cur.getString(idColumn);    
    21.                 // 获得联系人姓名     
    22.                 String disPlayName = cur.getString(displayNameColumn);  
    23.                 System.out.println(disPlayName);  
    24.                 samContact.name = disPlayName;  
    25.                 // 查看该联系人有多少个电话号码。如果没有这返回值为0     
    26.                 int  phoneCount = cur.getInt(cur.getColumnIndex(ContactsContract.Contacts.HAS_PHONE_NUMBER));  
    27.                 if(phoneCount <1)  
    28.                 {  
    29.                     continue;  
    30.                 }  
    31.                 Cursor phones = getContentResolver().query(    
    32.                         ContactsContract.CommonDataKinds.Phone.CONTENT_URI,    
    33.                         null ,    
    34.                         ContactsContract.CommonDataKinds.Phone.CONTACT_ID    
    35.                                 + " = "  + contactId,  null ,  null );  
    36.                 if  (phones.moveToFirst())   
    37.                 {    
    38.                     do  {    
    39.                         // 遍历所有的电话号码     
    40.                         String phoneNumber = phones    
    41.                                 .getString(phones    
    42.                                         .getColumnIndex(ContactsContract.CommonDataKinds.Phone.NUMBER));    
    43.                         int phoneType = phones    
    44.                                 .getInt(phones    
    45.                                         .getColumnIndex(ContactsContract.CommonDataKinds.Phone.TYPE));  
    46.                         if(phoneType == ContactsContract.CommonDataKinds.Phone.TYPE_MOBILE)  
    47.                         {  
    48.                             samContact.phone = phoneNumber;  
    49.                             arrayList.add(samContact);  
    50.                             break;  
    51.                         }  
    52.                     } while  (phones.moveToNext());   
    53.                       
    54.                 }  
    55.                   
    56.                   
    57.                   
    58.             }while(cur.moveToNext());  
    59.         }  
    60.         //获取sim卡联系人  
    61.         Uri uri = Uri.parse("content://icc/adn");  
    62.         Cursor cur2 = getContentResolver().query(    
    63.                 uri,    
    64.                 null ,    
    65.                 null ,    
    66.                 null ,    
    67.                 ContactsContract.Contacts.DISPLAY_NAME    
    68.                         + " COLLATE LOCALIZED ASC" );  
    69.         System.out.println("contact num from sim card = "+cur2.getCount());  
    70.         System.out.println("---------------");  
    71.         if(cur2.moveToFirst())  
    72.         {  
    73.             do{  
    74.                 try   
    75.                 {  
    76.                     SamContact samContact = new SamContact();  
    77.                     samContact.isChoosed = false;  
    78.                     int  displayNameColumn = cur2.getColumnIndex(People.NAME);  
    79.                     int  phoneColumn = cur2.getColumnIndex(People.NUMBER);  
    80.                     samContact.name  = cur2.getString(displayNameColumn);  
    81.                     if(samContact.name == null)  
    82.                     {  
    83.                         continue;  
    84.                     }  
    85.                     samContact.phone = cur2.getString(phoneColumn);   
    86.                     if(samContact.phone == null)  
    87.                     {  
    88.                         continue;  
    89.                     }  
    90.                     arrayList.add(samContact);  
    91.                 }   
    92.                 catch (Exception e)   
    93.                 {  
    94.                     e.printStackTrace();  
    95.                 }   
    96.             }while(cur2.moveToNext());  
    97.         }  
    98.           
    99.           
    100.         return arrayList;  
    101.     }  
    102.       
    103.       
    104.     public static class SamContact   
    105.     {  
    106.         public String name = "";  
    107.         public String phone = "";  
    108.         public boolean isChoosed = false;  
    109.           
    110.     }  
    http://blog.youkuaiyun.com/ljb_blog/article/details/11047655
    http://samyou.iteye.com/blog/1047270

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值