




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
【移動(dòng)應(yīng)用開發(fā)技術(shù)】Android中怎么實(shí)現(xiàn)一個(gè)手機(jī)管理工具類
本篇文章給大家分享的是有關(guān)Android中怎么實(shí)現(xiàn)一個(gè)手機(jī)管理工具類,在下覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著在下一起來看看吧。工具類內(nèi)的方法:getInstance
:單例對象getSDKVersionNumber
:獲取手機(jī)系統(tǒng)版本號getPhoneModel
:獲取手機(jī)型號getPhoneWidth
:獲取手機(jī)寬度getPhoneHeight
:獲取手機(jī)高度getPhoneImei
:獲取手機(jī)imei串號,GSM手機(jī)的IMEI和CDMA手機(jī)的MEIDgetPhoneSim
:獲取手機(jī)sim卡號getPhoneNum
:獲取手機(jī)號isSDCardMount
:判斷sd卡是否掛載getSDFreeSize
:獲取sd卡剩余空間的大小getSDAllSize
:獲取sd卡空間的總大小isTablet
:判斷是否是平板isApkInstalled
:判斷一個(gè)apk是否安裝getAppPermissions
:獲取應(yīng)用權(quán)限名稱列表getInstalledApp
:獲取手機(jī)內(nèi)安裝的應(yīng)用getUserInstalledApp
:獲取手機(jī)安裝非系統(tǒng)應(yīng)用getInstalledAppInfo
:獲取安裝應(yīng)用的信息startAppPkg
:打開指定包名的應(yīng)用unInstallApk
:卸載指定包名的應(yīng)用callPhone
:直接呼叫指定的號碼toCallPhoneActivity
:跳轉(zhuǎn)至撥號界面sendMessage
:直接調(diào)用短信API發(fā)送信息(設(shè)置監(jiān)聽發(fā)送和接收狀態(tài))toSendMessageActivity:跳轉(zhuǎn)至發(fā)送短信界面(自動(dòng)設(shè)置接收方的號碼)AppPhoneMgr類的代碼
package
com.example.phone;
import
android.content.Context;
import
android.content.Intent;
import
android.content.pm.ApplicationInfo;
import
android.content.pm.PackageInfo;
import
android.content.pm.PackageManager;
import
android.content.pm.PackageManager.NameNotFoundException;
import
android.content.res.Configuration;
import
.Uri;
import
android.os.Environment;
import
android.os.StatFs;
import
vider.Contacts;
import
android.telephony.TelephonyManager;
import
android.view.WindowManager;
import
java.io.File;
import
java.util.ArrayList;
import
java.util.HashMap;
import
java.util.List;
import
java.util.Map;
import
java.util.regex.Matcher;
import
java.util.regex.Pattern;
/**
*
主要功能:手機(jī)管理工具類
*/
public
class
AppPhoneMgr
{
private
static
AppPhoneMgr
phoneUtil;
public
static
AppPhoneMgr
getInstance()
{
if
(phoneUtil
==
null)
{
synchronized
(AppPhoneMgr.class)
{
if
(phoneUtil
==
null)
{
phoneUtil
=
new
AppPhoneMgr();
}
}
}
return
phoneUtil;
}
/**
*
獲取手機(jī)系統(tǒng)版本號
*
*
@return
*/
public
Integer
getSDKVersionNumber()
{
Integer
sdkVersion;
try
{
sdkVersion
=
Integer.valueOf(android.os.Build.VERSION.SDK_INT);
}
catch
(NumberFormatException
e)
{
e.printStackTrace();
sdkVersion
=
Integer.valueOf(0);
}
return
sdkVersion;
}
/**
*
獲取手機(jī)型號
*/
public
String
getPhoneModel()
{
return
android.os.Build.MODEL;
}
/**
*
獲取手機(jī)寬度
*/
@SuppressWarnings("deprecation")
public
int
getPhoneWidth(Context
context)
{
WindowManager
wm
=
(WindowManager)
context
.getSystemService(Context.WINDOW_SERVICE);
return
wm.getDefaultDisplay().getWidth();
}
/**
*
獲取手機(jī)高度
*
*
@param
context
*/
@SuppressWarnings("deprecation")
public
int
getPhoneHeight(Context
context)
{
WindowManager
wm
=
(WindowManager)
context
.getSystemService(Context.WINDOW_SERVICE);
return
wm.getDefaultDisplay().getHeight();
}
/**
*
獲取手機(jī)imei串號
,GSM手機(jī)的
IMEI
和
CDMA手機(jī)的
MEID.
*
*
@param
context
*/
public
String
getPhoneImei(Context
context)
{
TelephonyManager
tm
=
(TelephonyManager)
context
.getSystemService(Context.TELEPHONY_SERVICE);
if
(tm
==
null)
return
null;
return
tm.getDeviceId();
}
/**
*
獲取手機(jī)sim卡號
*
*
@param
context
*/
public
String
getPhoneSim(Context
context)
{
TelephonyManager
tm
=
(TelephonyManager)
context
.getSystemService(Context.TELEPHONY_SERVICE);
if
(tm
==
null)
return
null;
return
tm.getSubscriberId();
}
/**
*
獲取手機(jī)號
*
*
@param
context
*/
public
String
getPhoneNum(Context
context)
{
TelephonyManager
tm
=
(TelephonyManager)
context
.getSystemService(Context.TELEPHONY_SERVICE);
if
(tm
==
null)
return
null;
return
tm.getLine1Number();
}
/**
*
判斷sd卡是否掛載
*/
public
boolean
isSDCardMount()
{
if
(Environment.getExternalStorageState().equals(
Environment.MEDIA_MOUNTED))
{
return
true;
}
else
{
return
false;
}
}
/**
*
獲取sd卡剩余空間的大小
*/
@SuppressWarnings("deprecation")
public
long
getSDFreeSize()
{
File
path
=
Environment.getExternalStorageDirectory();
//
取得SD卡文件路徑
StatFs
sf
=
new
StatFs(path.getPath());
long
blockSize
=
sf.getBlockSize();
//
獲取單個(gè)數(shù)據(jù)塊的大小(Byte)
long
freeBlocks
=
sf.getAvailableBlocks();//
空閑的數(shù)據(jù)塊的數(shù)量
//
返回SD卡空閑大小
return
(freeBlocks
*
blockSize)
/
1024
/
1024;
//
單位MB
}
/**
*
獲取sd卡空間的總大小
*/
@SuppressWarnings("deprecation")
public
long
getSDAllSize()
{
File
path
=
Environment.getExternalStorageDirectory();
//
取得SD卡文件路徑
StatFs
sf
=
new
StatFs(path.getPath());
long
blockSize
=
sf.getBlockSize();
//
獲取單個(gè)數(shù)據(jù)塊的大小(Byte)
long
allBlocks
=
sf.getBlockCount();
//
獲取所有數(shù)據(jù)塊數(shù)
//
返回SD卡大小
return
(allBlocks
*
blockSize)
/
1024
/
1024;
//
單位MB
}
/**
*
判斷是否是平板
*/
public
boolean
isTablet(Context
context)
{
return
(context.getResources().getConfiguration().screenLayout
&
Configuration.SCREENLAYOUT_SIZE_MASK)
>=
Configuration.SCREENLAYOUT_SIZE_LARGE;
}
/**
*
判斷一個(gè)apk是否安裝
*
*
@param
context
*
@param
packageName
*/
public
boolean
isApkInstalled(Context
context,
String
packageName)
{
PackageManager
pm
=
context.getPackageManager();
try
{
pm.getPackageInfo(packageName,
0);
}
catch
(NameNotFoundException
e)
{
return
false;
}
return
true;
}
/**
*
撥打電話
*
*
@param
context
*
@param
phoneNum
*/
public
void
call(Context
context,
String
phoneNum)
throws
Exception
{
if
(phoneNum
!=
null
&&
!phoneNum.equals(""))
{
Uri
uri
=
Uri.parse("tel:"
+
phoneNum);
Intent
intent
=
new
Intent(Intent.ACTION_DIAL,
uri);
context.startActivity(intent);
}
}
/**
*
跳轉(zhuǎn)到聯(lián)系人界面
*/
public
void
toChooseContactsList(Context
context)
{
Intent
intent
=
new
Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setData(Contacts.People.CONTENT_URI);
context.startActivity(intent);
}
/**
*
發(fā)送短信界面
,現(xiàn)在好像不行了
*/
public
void
toSendMessageActivity(Context
context,
String
number)
{
try
{
Uri
uri
=
Uri.parse("smsto:"
+
number);
Intent
intent
=
new
Intent(Intent.ACTION_SENDTO,
uri);
context.startActivity(intent);
}
catch
(Exception
e)
{
e.printStackTrace();
}
}
/**
*
打開網(wǎng)頁
*/
public
void
openWeb(Context
context,
String
url)
{
try
{
Uri
uri
=
Uri.parse(url);
context.startActivity(new
Intent(Intent.ACTION_VIEW,
uri));
}
catch
(Exception
e)
{
e.printStackTrace();
}
}
/**
*
獲取應(yīng)用權(quán)限
名稱列表
*/
public
String[]
getAppPermissions(Context
context)
throws
NameNotFoundException
{
PackageManager
pm
=
context.getPackageManager();
PackageInfo
packageInfo
=
pm.getPackageInfo(context.getPackageName(),
PackageManager.GET_PERMISSIONS);
return
getAppPermissions(packageInfo);
}
public
String[]
getAppPermissions(PackageInfo
packageInfo)
throws
NameNotFoundException
{
return
packageInfo.requestedPermissions;
}
/**
*
獲取手機(jī)內(nèi)安裝的應(yīng)用
*/
public
List<PackageInfo>
getInstalledApp(Context
context)
{
PackageManager
pm
=
context.getPackageManager();
return
pm.getInstalledPackages(0);
}
/**
*
獲取手機(jī)安裝非系統(tǒng)應(yīng)用
*/
@SuppressWarnings("static-access")
public
List<PackageInfo>
getUserInstalledApp(Context
context)
{
List<PackageInfo>
infos
=
getInstalledApp(context);
List<PackageInfo>
apps
=
new
ArrayList<PackageInfo>();
for
(PackageInfo
info
:
infos)
{
if
((info.applicationInfo.flags
&
info.applicationInfo.FLAG_SYSTEM)
<=
0)
{
apps.add(info);
}
}
infos.clear();
infos
=
null;
return
apps;
}
/**
*
獲取安裝應(yīng)用的信息
*/
public
Map<String,
Object>
getInstalledAppInfo(Context
context,
PackageInfo
info)
{
Map<String,
Object>
appInfos
=
new
HashMap<String,
Object>();
PackageManager
pm
=
context.getPackageManager();
ApplicationInfo
aif
=
info.applicationInfo;
appInfos.put("icon",
pm.getApplicationIcon(aif));
appInfos.put("lable",
pm.getApplicationLabel(aif));
appInfos.put("packageName",
aif.packageName);
return
appInfos;
}
/**
*
打開指定包名的應(yīng)用
*/
public
void
startAppPkg(Context
context,
String
pkg)
{
Intent
startIntent
=
context.getPackageManager()
.getLaunchIntentForPackage(pkg);
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
}
/**
*
卸載指定包名的應(yīng)用
*/
public
void
unInstallApk(Context
context,
String
packageName)
{
Uri
uri
=
Uri.parse("package:"
+
packageName);
Intent
intent
=
new
Intent(Intent.ACTION_DELETE);
intent.setData(uri);
context.startActivity(intent);
}
/**
*
手機(jī)號判斷
*/
public
static
boolean
isMobileNO(String
mobile)
{
Pattern
p
=
Pattern
.compile("^((145|147)|(15[^4])|(17[0-9])|((13|18)[0-9]))\\d{8}$");
Matcher
m
=
p.matcher(mobile);
return
m.matches();
}
}Activity的調(diào)用示例代碼:package
com.example.phone;
import
android.app.Activity;
import
android.content.pm.PackageInfo;
import
android.content.pm.PackageManager;
import
android.os.Bundle;
import
android.view.View;
import
android.widget.Toast;
import
java.util.Arrays;
import
java.util.List;
import
java.util.Map;
/**
*
手機(jī)管理工具類的使用示例
*/
public
class
MyActivity
extends
Activity
{
@Override
public
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
*
獲取手機(jī)系統(tǒng)版本號
*
*
@return
*/
public
void
getSDKVersionNumber(View
view)
{
Integer
sdkVersionNumber
=
AppPhoneMgr.getInstance().getSDKVersionNumber();
showToast("
\n
獲取手機(jī)系統(tǒng)版本號:"
+
sdkVersionNumber);
}
/**
*
獲取手機(jī)型號
*/
public
void
getPhoneModel(View
view)
{
String
phoneModel
=
AppPhoneMgr.getInstance().getPhoneModel();
showToast("
\n
獲取手機(jī)型號:"
+
phoneModel);
}
/**
*
獲取手機(jī)寬度
*/
public
void
getPhoneWidth(View
view)
{
int
phoneWidth
=
AppPhoneMgr.getInstance().getPhoneWidth(this);
showToast("
\n
獲取手機(jī)寬度:"
+
phoneWidth);
}
/**
*
獲取手機(jī)高度
*/
public
void
getPhoneHeight(View
view)
{
int
phoneHeight
=
AppPhoneMgr.getInstance().getPhoneHeight(this);
showToast("
\n
獲取手機(jī)寬度:"
+
phoneHeight);
}
/**
*
獲取手機(jī)imei串號
,GSM手機(jī)的
IMEI
和
CDMA手機(jī)的
MEID.
*
需要權(quán)限:android.permission.READ_PHONE_STATE.否則會(huì)報(bào)錯(cuò)
*/
public
void
getPhoneImei(View
view)
{
String
phoneImei
=
AppPhoneMgr.getInstance().getPhoneImei(this);
showToast("
\n
獲取手機(jī)imei串號:"
+
phoneImei);
}
/**
*
獲取手機(jī)sim卡號
*/
public
void
getPhoneSim(View
view)
{
String
phoneSim
=
AppPhoneMgr.getInstance().getPhoneSim(this);
showToast("
\n
獲取手機(jī)sim卡號:"
+
phoneSim);
}
/**
*
獲取手機(jī)號,不行??
*/
public
void
getPhoneNum(View
view)
{
String
phoneSim
=
AppPhoneMgr.getInstance().getPhoneNum(this);
showToast("
\n
獲取手機(jī)號:"
+
phoneSim);
}
/**
*
判斷sd卡是否掛載
*/
public
void
isSDCardMount(View
view)
{
boolean
isSDCardMount
=
AppPhoneMgr.getInstance().isSDCardMount();
showToast("
\n
判斷sd卡掛載:"
+
isSDCardMount);
}
/**
*
獲取sd卡剩余空間的大小
*/
public
void
getSDFreeSize(View
view)
{
long
getSDFreeSize
=
AppPhoneMgr.getInstance().getSDFreeSize();
showToast("
\n
獲取sd卡剩余空間的大小:"
+
getSDFreeSize);
}
/**
*
獲取sd卡空間的總大小
*/
public
void
getSDAllSize(View
view)
{
long
getSDAllSize
=
AppPhoneMgr.getInstance().getSDAllSize();
showToast("
\n
獲取sd卡剩余空間的大小:"
+
getSDAllSize);
}
/**
*
判斷是否是平板
*/
public
void
isTablet(View
view)
{
boolean
isTablet
=
AppPhoneMgr.getInstance().isTablet(this);
showToast("
\n
判斷是否是平板:"
+
isTablet);
}
/**
*
判斷一個(gè)apk是否安裝
*/
public
void
isApkInstalled(View
view)
{
boolean
isApkInstalled
=
AppPhoneMgr.getInstance().isApkInstalled(this,
"com.wanputech.abp");
showToast("
\n
判斷一個(gè)apk是否安裝:"
+
isApkInstalled);
}
/**
*
撥打電話
*/
public
void
call(View
view)
{
String
phone
=
;
try
{
AppPhoneMgr.getInstance().call(this,
phone);
}
catch
(Exception
e)
{
showToast("
\n
撥打電話失敗:"
+
e.getMessage());
}
showToast("
\n
撥打電話:"
+
phone);
}
/**
*
跳轉(zhuǎn)到聯(lián)系人界面
*/
public
void
toChooseContactsList(View
view)
{
AppPhoneMgr.getInstance().toChooseContactsList(this);
}
/**
*
發(fā)送短信界面
*/
public
void
toSendMessageActivity(View
view)
{
AppPhoneMgr.getInstance().toSendMessageActivity(this,
"12315");
}
/**
*
打開網(wǎng)頁
*/
public
void
openWeb(View
view)
{
String
url
=
"/";
//百度
AppPhoneMgr.getInstance().openWeb(this,
url);
}
/**
*
獲取應(yīng)用權(quán)限
名稱列表
*/
public
void
getAppPermissions(View
view)
{
try
{
String[]
getAppPermissions
=
AppPhoneMgr.getInstance().getAppPermissions(this);
showToast("
\n
獲取應(yīng)用權(quán)限
名稱列表:"
+
getAppPermissions);
}
catch
(Exception
e)
{
showToast("
\n
獲取應(yīng)用權(quán)限
名稱列表:"
+
e.getMessage());
}
}
/**
*
程序請求了的權(quán)限
*/
public
void
getAppPermissions2(View
view)
{
try
{
String[]
getAppPermissions
=
AppPhoneMgr.getInstance().getAppPermissions(getPackageManager().getPackageInfo("com.example.phone",
1));
showToast("
\n
程序請求了的權(quán)限:"
+
Arrays.asList(getAppPermissions));
}
catch
(Exception
e)
{
showToast("
\n
程序請求了的權(quán)限:"
+
e.getMessage());
}
}
/**
*
獲取手機(jī)內(nèi)安裝的應(yīng)用
*/
public
void
getInstalledApp(View
view)
{
List<PackageInfo>
installedApp
=
AppPhoneMgr.getInstance().getInstalledApp(this);
for
(int
i
=
0;
i
<
installedApp.size();
i++)
{
showToast("
\n
獲取手機(jī)內(nèi)安裝的應(yīng)用:"
+
installedApp.get(i));
}
}
/**
*
獲取手機(jī)安裝非系統(tǒng)應(yīng)用
*/
public
void
getUserInstalledApp(View
view)
{
List<PackageInfo>
installedApp
=
AppPhoneMgr.getInstance().getUserInstalledApp(this);
for
(int
i
=
0;
i
<
installedApp.size();
i++)
{
showT
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勘察設(shè)計(jì)合同住建部
- 2025年咸寧貨運(yùn)從業(yè)資格證考試模擬考試題庫
- 2025年西雙版納貨運(yùn)運(yùn)輸駕駛員從業(yè)資格證考試試題
- 電商總監(jiān)勞務(wù)合同5篇
- 2023年高考真題全國乙卷地理試卷解析
- 微晶玻璃管戰(zhàn)略市場規(guī)劃報(bào)告
- 加班裝貨送貨合同范本
- 鹵肉店培訓(xùn)合同范本
- 廚房技術(shù)購買合同范本
- 1+X無人機(jī)模擬題與答案
- 航天集團(tuán)人才隊(duì)伍建設(shè)經(jīng)驗(yàn)介紹
- 牙周炎-侵襲性牙周炎
- 心理委員工作記錄表
- 新教科版五下科學(xué)1-5《當(dāng)環(huán)境改變了》公開課課件
- 教師的十大轉(zhuǎn)變課件
- 焦化廠生產(chǎn)工序及工藝流程圖
- 可下載打印的公司章程
- 中藥熏洗法課件
- 本特利探頭應(yīng)用
- QMR-110-00員工手部、接觸面等微生物檢驗(yàn)記錄記錄
- 外陰及陰道炎癥
評論
0/150
提交評論