當前位置:首頁 » 手機軟體 » 手機怎麼才能進入第三方軟體

手機怎麼才能進入第三方軟體

發布時間: 2022-02-28 00:37:55

怎麼打開第三方應用程序

需求場景:
在自己開發的應用程序里,有個跳轉到其他應用的按鈕,比如分享到「新浪微博」,當點擊這個按鈕時,先判斷手機中是否有安裝「新浪微博」這個程序,有則啟動「新浪微博」客戶端,否則從指定的URL地址進行下載。
簡言之,開啟其他應用,包名跳轉。
1、從一個應用跳轉到其他應用要獲取什麼信息?
need第三方應用的包名,以及下載鏈接。
2、如何判斷本機是否已經安裝了該第三方應用?
(1)首先得到該程序的包名;
別人的應用程序我怎麼知道他的包名和類名?
- 通過adb裡面看程序裝的所有應用
- 寫一個遍歷程序,獲取所有已安裝的程序,把包名列印出來,新浪微博的包名中應該會帶有sina字眼,如 com.sina.weibo
//獲取已經安裝apk列表
List<PackageInfo> packList = context.getPackageManager().getInstalledPackages(0);
//獲得包名PackageInfo.packageName

(2)然後通過PackageManager判斷是否存在該包的程序 。
android的每一個apk的activity的包的名字都是唯一的,所以可以通過判斷這個activity所在包的名字來判斷是不是該Apk已經安裝
例1:
//以twitter程序為例,假設twitter程序包名為「com.twitter.android」。這時候可用以下代碼來判斷是否被安裝。
//QQ客戶端的包名是"com.tencent.mobileqq"
PackageInfo packageInfo;//PackageInfo所在包為android.content.pm
try {
packageInfo = this.getPackageManager().getPackageInfo("com.twitter.android", 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if(packageInfo ==null){
System.out.println("沒有安裝");
}else{
System.out.println("已經安裝");
}

例2:可以封裝到方法里,操作一樣,只是把包名作為參數傳入,返回值為布爾類型
private boolean isPkgInstalled(String pkgName) {
PackageInfo packageInfo = null;
try {
packageInfo = this.getPackageManager().getPackageInfo(pkgName, 0);
} catch (NameNotFoundException e) {
packageInfo = null;
e.printStackTrace();
}
if (packageInfo == null) {
return false;
} else {
return true;
}

3、怎麼跳轉?
通過隱式intent跳轉
例3:PackageManager中有getLaunchIntentForPackage這個方法!
//String pkg代表包名,String download代表下載url
final PackageManager pm = context.getPackageManager();
Intent intent = pm.getLaunchIntentForPackage(pkg);
if (null == intent) {//沒有獲取到intent
if (!TextUtils.isEmpty(downoad)) {//跳轉到下載第三方應用界面
context.startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(downoad)));
}
} else {
context.startActivity(intent);
}

例4:在我們自己的程序中調用其他程序時往往要檢查手機有沒有安裝該軟體後再做相應操作,如沒有安裝,用intent將用戶引導至android market去下載該程序,如已安裝則打開該程序,並傳入參數和調用其功能。
//下面介紹怎麼判斷手機已安裝某程序的方法:
private boolean isAvilible(Context context, String packageName){
final PackageManager packageManager = context.getPackageManager();//獲取packagemanager
List< packageInfo> pinfo = packageManager.getInstalledPackages(0);//獲取所有已安裝程序的包信息
List<String> pName = new ArrayList<String>();//用於存儲所有已安裝程序的包名
//從pinfo中將包名字逐一取出,壓入pName list中
if(pinfo != null){
for(int i = 0; i < pinfo.size(); i++){
String pn = pinfo.get(i).packageName;
pName.add(pn);
}
}
return pName.contains(packageName);//判斷pName中是否有目標程序的包名,有TRUE,沒有FALSE
}

//下面是調用該方法進行判斷後的邏輯:
//已安裝,打開程序,需傳入參數包名:"com.skype.android.verizon"
if(isAvilible(this, "com.skype.android.verizon")){
Intent i = new Intent();
ComponentName cn = new ComponentName("com.skype.android.verizon",
"com.skype.android.verizon.SkypeActivity");
i.setComponent(cn);
startActivityForResult(i, RESULT_OK);
}
//未安裝,跳轉至market下載該程序
else {
Uri uri = Uri.parse("market://details?id=com.skype.android.verizon");//id為包名
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
}

參考鏈接:http://www.eoeandroid.com/thread-152763-1-1.html?_dsign=2242c74c
4、跳轉後呢?
如何在android應用程序中啟動其他apk程序,被啟動程序退出後返回之前的程序?
//你只需要在A中打開B,並為B設置 intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
//不做對A的關閉處理finish() 這樣就可以了

Intent intent=new Intent();
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setComponent(new ComponentName(objAppClassName, mainActivity));
context.startActivity(intent);

例5:原始跳轉方法,要包名和類名(通過ComponentName),後來可以只要包名…
Android 開發有時需要在一個應用中啟動另一個應用,比如Launcher載入所有的已安裝的程序的列表,當點擊圖標時可以啟動另一個應用。
一般我們知道了另一個應用的包名和MainActivity的名字之後便可以直接通過如下代碼來啟動:
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
ComponentName cn = new ComponentName(packageName, className);
intent.setComponent(cn);
startActivity(intent);

但是更多的時候,我們一般都不知道應用程序的啟動Activity的類名,而只知道包名,我們可以通過ResolveInfo類來取得啟動Acitivty的類名。
下面是實現代碼:
private void openApp(String packageName) {
PackageInfo pi = getPackageManager().getPackageInfo(packageName, 0);

Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
resolveIntent.setPackage(pi.packageName);

List<ResolveInfo> apps = pm.queryIntentActivities(resolveIntent, 0);

ResolveInfo ri = apps.iterator().next();
if (ri != null ) {
String packageName = ri.activityInfo.packageName;
String className = ri.activityInfo.name;

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);

ComponentName cn = new ComponentName(packageName, className);

intent.setComponent(cn);
startActivity(intent);
}
}

⑵ 手機第三方軟體是怎麼用手機的

一般第三方軟體在你下載安裝的時候會要你同意他會獲取的許可權的內容後才能安裝,安裝以後你在操作第三方軟體(或者在後台的時候)的時候它就會自動使用手機

⑶ 怎樣把手機第三方軟體設置成內置軟體

首先把你的手機破解了,那就OK啦,想裝啥軟體就裝啥軟體

⑷ 怎麼把第三方軟體裝進手機系統

可以把程序直接移動到system/app這個文件夾,並且修改許可權,就可以使第三方程序變成系統程序,恢復出廠設置也不會消失!
(注意,有的程序得改成相應的'名字',我的建議是先正常安裝,然後用'海卓雲卸載'來刪除,刪除時保留,就能夠得到真正的''真名apk)

⑸ 手機的第三方應用程序如何下載

在手機第三方應用里下載,比如360手機助手等。

⑹ 誰能告訴我,為什麼我的手機進第三方軟體,有的可以進,有的就是手機一片空白,沒有任何提示呢

這樣的情況就是有的第三方軟體打不開,這樣的情況也不排除軟體本身問題,你可以在正規的應用軟體里下載,如應用寶之類的軟體里下載,再就是系統升級導致的軟體和手機不兼容或是兼容不好導致,可以看看軟體是否有升級版本。

⑺ 怎麼把手機里允許第三方軟體這個設置關掉

摘要 您好,很高興為您解答~,請您稍後,我正在快馬加鞭為您整理答案,5分鍾內回復給您

⑻ android手機第三方軟體許可權

其實你說的問題,都是存在的,我們遇到的時候都是見怪不怪了,大多我們的手機都是取得ROOT許可權了,然後讓 正規的軟體獲取許可權,但是不要下載那些很少用的軟體防止中毒。軟體獲得許可權後功能上提供的更加好了,如果你不喜歡別人獲取你的手機資料,你就取消吧。但是相應的GOOGLE,或者上網時地理的定位功能是沒有,對你應該是沒問題吧,
好,現在回答你的問題。
1、獲取imei許可權(說實話沒有聽過,估計是指root許可權),就是指獲取GPS地理位置呀,簡訊呀,之類的。後台運行走流量。不是尋找合適手機型號軟體用的。
2、UC獲取的原因是你在登陸網址後可以記錄你的地理位置,你也可以看見別人上傳照片的地理位置,等等,
3、imei許可權(我當做root許可權吧)你還是先禁用吧。原因就是你估計還不太熟悉這些個應用吧!先去各個網站的論壇去看看學學吧!推薦機鋒網、安卓網。

⑼ 什麼系統手機支持第三方軟體

你好,除了買新手機上自帶的部分軟體,其他的都屬於第三方軟體。第三方軟體指的是該非線性編輯系統生產商以外的軟體公司提供的軟體。