版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
【移動應用開發(fā)技術(shù)】Android中怎么實現(xiàn)一個手機管理工具類
本篇文章給大家分享的是有關(guān)Android中怎么實現(xiàn)一個手機管理工具類,在下覺得挺實用的,因此分享給大家學習,希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著在下一起來看看吧。工具類內(nèi)的方法:getInstance
:單例對象getSDKVersionNumber
:獲取手機系統(tǒng)版本號getPhoneModel
:獲取手機型號getPhoneWidth
:獲取手機寬度getPhoneHeight
:獲取手機高度getPhoneImei
:獲取手機imei串號,GSM手機的IMEI和CDMA手機的MEIDgetPhoneSim
:獲取手機sim卡號getPhoneNum
:獲取手機號isSDCardMount
:判斷sd卡是否掛載getSDFreeSize
:獲取sd卡剩余空間的大小getSDAllSize
:獲取sd卡空間的總大小isTablet
:判斷是否是平板isApkInstalled
:判斷一個apk是否安裝getAppPermissions
:獲取應用權(quán)限名稱列表getInstalledApp
:獲取手機內(nèi)安裝的應用getUserInstalledApp
:獲取手機安裝非系統(tǒng)應用getInstalledAppInfo
:獲取安裝應用的信息startAppPkg
:打開指定包名的應用unInstallApk
:卸載指定包名的應用callPhone
:直接呼叫指定的號碼toCallPhoneActivity
:跳轉(zhuǎn)至撥號界面sendMessage
:直接調(diào)用短信API發(fā)送信息(設置監(jiān)聽發(fā)送和接收狀態(tài))toSendMessageActivity:跳轉(zhuǎn)至發(fā)送短信界面(自動設置接收方的號碼)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;
/**
*
主要功能:手機管理工具類
*/
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;
}
/**
*
獲取手機系統(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;
}
/**
*
獲取手機型號
*/
public
String
getPhoneModel()
{
return
android.os.Build.MODEL;
}
/**
*
獲取手機寬度
*/
@SuppressWarnings("deprecation")
public
int
getPhoneWidth(Context
context)
{
WindowManager
wm
=
(WindowManager)
context
.getSystemService(Context.WINDOW_SERVICE);
return
wm.getDefaultDisplay().getWidth();
}
/**
*
獲取手機高度
*
*
@param
context
*/
@SuppressWarnings("deprecation")
public
int
getPhoneHeight(Context
context)
{
WindowManager
wm
=
(WindowManager)
context
.getSystemService(Context.WINDOW_SERVICE);
return
wm.getDefaultDisplay().getHeight();
}
/**
*
獲取手機imei串號
,GSM手機的
IMEI
和
CDMA手機的
MEID.
*
*
@param
context
*/
public
String
getPhoneImei(Context
context)
{
TelephonyManager
tm
=
(TelephonyManager)
context
.getSystemService(Context.TELEPHONY_SERVICE);
if
(tm
==
null)
return
null;
return
tm.getDeviceId();
}
/**
*
獲取手機sim卡號
*
*
@param
context
*/
public
String
getPhoneSim(Context
context)
{
TelephonyManager
tm
=
(TelephonyManager)
context
.getSystemService(Context.TELEPHONY_SERVICE);
if
(tm
==
null)
return
null;
return
tm.getSubscriberId();
}
/**
*
獲取手機號
*
*
@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();
//
獲取單個數(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();
//
獲取單個數(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;
}
/**
*
判斷一個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();
}
}
/**
*
獲取應用權(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;
}
/**
*
獲取手機內(nèi)安裝的應用
*/
public
List<PackageInfo>
getInstalledApp(Context
context)
{
PackageManager
pm
=
context.getPackageManager();
return
pm.getInstalledPackages(0);
}
/**
*
獲取手機安裝非系統(tǒ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;
}
/**
*
獲取安裝應用的信息
*/
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;
}
/**
*
打開指定包名的應用
*/
public
void
startAppPkg(Context
context,
String
pkg)
{
Intent
startIntent
=
context.getPackageManager()
.getLaunchIntentForPackage(pkg);
startIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(startIntent);
}
/**
*
卸載指定包名的應用
*/
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);
}
/**
*
手機號判斷
*/
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;
/**
*
手機管理工具類的使用示例
*/
public
class
MyActivity
extends
Activity
{
@Override
public
void
onCreate(Bundle
savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
/**
*
獲取手機系統(tǒng)版本號
*
*
@return
*/
public
void
getSDKVersionNumber(View
view)
{
Integer
sdkVersionNumber
=
AppPhoneMgr.getInstance().getSDKVersionNumber();
showToast("
\n
獲取手機系統(tǒng)版本號:"
+
sdkVersionNumber);
}
/**
*
獲取手機型號
*/
public
void
getPhoneModel(View
view)
{
String
phoneModel
=
AppPhoneMgr.getInstance().getPhoneModel();
showToast("
\n
獲取手機型號:"
+
phoneModel);
}
/**
*
獲取手機寬度
*/
public
void
getPhoneWidth(View
view)
{
int
phoneWidth
=
AppPhoneMgr.getInstance().getPhoneWidth(this);
showToast("
\n
獲取手機寬度:"
+
phoneWidth);
}
/**
*
獲取手機高度
*/
public
void
getPhoneHeight(View
view)
{
int
phoneHeight
=
AppPhoneMgr.getInstance().getPhoneHeight(this);
showToast("
\n
獲取手機寬度:"
+
phoneHeight);
}
/**
*
獲取手機imei串號
,GSM手機的
IMEI
和
CDMA手機的
MEID.
*
需要權(quán)限:android.permission.READ_PHONE_STATE.否則會報錯
*/
public
void
getPhoneImei(View
view)
{
String
phoneImei
=
AppPhoneMgr.getInstance().getPhoneImei(this);
showToast("
\n
獲取手機imei串號:"
+
phoneImei);
}
/**
*
獲取手機sim卡號
*/
public
void
getPhoneSim(View
view)
{
String
phoneSim
=
AppPhoneMgr.getInstance().getPhoneSim(this);
showToast("
\n
獲取手機sim卡號:"
+
phoneSim);
}
/**
*
獲取手機號,不行??
*/
public
void
getPhoneNum(View
view)
{
String
phoneSim
=
AppPhoneMgr.getInstance().getPhoneNum(this);
showToast("
\n
獲取手機號:"
+
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);
}
/**
*
判斷一個apk是否安裝
*/
public
void
isApkInstalled(View
view)
{
boolean
isApkInstalled
=
AppPhoneMgr.getInstance().isApkInstalled(this,
"com.wanputech.abp");
showToast("
\n
判斷一個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);
}
/**
*
獲取應用權(quán)限
名稱列表
*/
public
void
getAppPermissions(View
view)
{
try
{
String[]
getAppPermissions
=
AppPhoneMgr.getInstance().getAppPermissions(this);
showToast("
\n
獲取應用權(quán)限
名稱列表:"
+
getAppPermissions);
}
catch
(Exception
e)
{
showToast("
\n
獲取應用權(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());
}
}
/**
*
獲取手機內(nèi)安裝的應用
*/
public
void
getInstalledApp(View
view)
{
List<PackageInfo>
installedApp
=
AppPhoneMgr.getInstance().getInstalledApp(this);
for
(int
i
=
0;
i
<
installedApp.size();
i++)
{
showToast("
\n
獲取手機內(nèi)安裝的應用:"
+
installedApp.get(i));
}
}
/**
*
獲取手機安裝非系統(tǒ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)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2024綜合崗位勞動協(xié)議模板版B版
- 2024年版城市出租車租賃協(xié)議樣式版B版
- 2025年消防安全管理咨詢及標準制定合同2篇
- 2024-2025學年高中歷史第七單元復雜多樣的當代世界第24課兩極對峙格局的形成學案含解析岳麓版必修1
- 2024-2025學年高中語文課時分層作業(yè)4歸去來兮辭并序含解析新人教版必修5
- 二零二四年度時尚傳媒廣告投放及制作合同
- 2025年度道路照明燈具批發(fā)合同范本3篇
- 2025年酒店客房銷售渠道建設與維護合同3篇
- 2025年度綠色生態(tài)農(nóng)業(yè)種植承包合同范本3篇
- 2025年蔬菜種植戶與農(nóng)產(chǎn)品電商平臺合作合同范本3篇
- 2025年度影視制作公司兼職制片人聘用合同3篇
- 兒童糖尿病的飲食
- 2025屆高考語文復習:散文的結(jié)構(gòu)與行文思路 課件
- 干細胞項目商業(yè)計劃書
- 拉薩市2025屆高三第一次聯(lián)考(一模)語文試卷(含答案解析)
- 浙江省嘉興市2024-2025學年高一數(shù)學上學期期末試題含解析
- 2024年高考新課標Ⅱ卷語文試題講評課件
- 無人機航拍技術(shù)教案(完整版)
- 人教PEP版(2024)三年級上冊英語Unit 4《Plants around us》單元作業(yè)設計
- 《保密法》培訓課件
- 醫(yī)院項目竣工驗收和工程收尾階段的管理措施專項方案
評論
0/150
提交評論