如果我創建了一個依賴於另一個應用程序(例如:Facebook和Twitter應用程序)的應用程序,但它們未安裝,是否有方法檢查這些依賴關係,並將它們與我自己的應用程序同時安裝?如何製作依賴於其他應用的Android應用?
回答
我在我的應用程序中這樣做了,它需要安裝zxing掃描儀應用程序。 裏面,你會想這是你的onclick或ontouch:
try{
Intent intent = new Intent("com.google.zxing.client.android.SCAN");
intent.setPackage("com.google.zxing.client.android");
startActivityForResult(intent, 0);
} catch (Exception e) {
createAlert("Barcode Scanner not installed!", "This application uses " +
"the open source barcode scanner by ZXing Team, you need to install " +
"this before you can use this software!", true);
}
其整理出所有的代碼出來後調用
public void createAlert(String title, String message, Boolean button) {
// http://androidideasblog.blogspot.com/2010/02/how-to-add-messagebox-in-android.html
AlertDialog alertDialog;
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.setTitle(title);
alertDialog.setMessage(message);
if ((button == true)) {
alertDialog.setButton("Download Now",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Intent browserIntent = new Intent(
Intent.ACTION_VIEW,
Uri.parse("market://search?q=pname:com.google.zxing.client.android"));
startActivity(browserIntent);
}
});
}
alertDialog.show();
}
然後我意識到你要求它在同時安裝你的應用程序。不知道是否應該發佈此代碼,但它可能有幫助
開始從這個:
Intent mediaIntent = new Intent("com.example.intent.action.NAME");
// add needed categories
List<ResolveInfo> listResolveInfo = getPackageManager().queryIntentServices(mediaIntent, 0);
if (listResolveInfo.size() != 0) {
//normal behavior
} else {
//install what you need
}
我給你舉例查詢服務。如果你想檢查活動,那麼你將調用queryIntentActivities()。
簡短回答:不,您不能自動安裝其他應用程序作爲依賴關係。
較長的答案:
Android電子市場不會讓你申報其他應用程序安裝的依賴。作爲一個系統,Market似乎是爲單一應用程序安裝而設計的 - 而不是Linux發行版風格的超大型依賴關係圖。
在運行,您可以測試用於安裝的應用程序和踢你的用戶轉移到市場,如果這樣。請參閱@QuickNick建議的技術(測試是否安裝了應用程序)和@TerryProbert(投放市場),如果這是您想要的。
最好的辦法可能是設計你的應用程序,如果依賴關係不可用,請優雅地降級,並建議(或堅持)他們前往市場安裝它們。
我認爲按照Android開發人員博客上這篇文章中概述的模式可以幫助您。 http://android-developers.blogspot.com/2009/01/can-i-use-this-intent.html 正如TerryProbert指出的,如果您知道Intent不可用,請提示用戶安裝缺失的應用程序。
這裏是我用來返回第一個存在的任務活動:
try {
Class<?> missionClass = Class.forName(mPackageName+".Mission"+mission);
Method missionDescription;
missionDescription = missionClass.getMethod("missionDescription");
mMissionDescription = (String) missionDescription.invoke(null);
if (mMissionDescription.length() > 0) {
nextMission = mission;
break;
}
} catch (Exception e) {
//DEBUG*/Log.v(this.getClass().getName(), "onResume: Mission no "+mission+" not found: "+e.getMessage());
}
每個任務是在一個單獨的類舉行,從任務基類派生。派生類被稱爲Mission1,Mission24等。
並非所有的任務都被定義。
基類有一個抽象類missionDescription,它返回描述任務的字符串。
此代碼位於循環內,因此測試任務= 1至99,嘗試調用missionDescription。當返回找到的第一個任務的描述時它會返回。
- 1. 依賴於其他形式的控制
- 2. 如何讓用戶知道他/她需要安裝其他應用程序,我的應用程序依賴於
- 3. 如何使CN1Lib依賴於其他CN1Lib
- 4. 如何使用Android的WebView運行JavaScript依賴於其他庫/模塊
- 5. Android控制其他應用程序
- 6. 依賴於其他列的Gridview圖片
- 7. 依賴於其他DLL的插件DLL
- 8. asyncValidator依賴於其他字段的值
- 9. 列依賴於其他列的值
- 10. 依賴於其他DLL的DLL?
- 11. 如何從其他Android應用程序
- 12. 依賴於其他屬性的依賴屬性
- 13. 如何製作其他應用程序的動作?
- 14. 我應該使用RoboGuice還是其他依賴注入框架?
- 15. 如何快速開發不依賴其他運行時的Windows應用程序?
- 16. 如何在其他Aondroid應用中使用Android應用登錄?
- 17. 針對依賴於來自其他應用程序的外部數據庫的應用程序的RSpec設置
- 18. 是否可以將其他標籤應用於依賴關係角色?
- 19. 其他Android應用程序
- 20. 從依賴於其他2個關係
- 21. 過濾行依賴於其他行
- 22. Android應用程序依賴關係ClassNotFoundException
- 23. 視圖應該依賴於其控制器嗎? (ASP.NET MVC)
- 24. JSPM Builder:如何依賴其他模塊?
- 25. 如何發佈依賴於外部文件的應用程序
- 26. 組件樣式不應該依賴於應用程序的其餘部分?
- 27. 我該如何使用應用程序作爲依賴關係
- 28. 使用依賴於Swift中其他Obj-C的Obj-C?
- 29. 製作一個依賴於avifil32.dll的.net應用程序的安裝程序?
- 30. 製作編譯作用依賴於其他子項目的編制,而不把它們添加到classpath中
我不認爲你應該只是捕捉一個有點廣泛的「異常」,捕捉實際的異常實例可能會更好。 – AGrunewald
@AGrunewald我完全同意! :)有時我只是特別懶惰 – TerryProbert