2010-12-29 15 views
7

Bir uygulamada eklentilere sahip olmanın bir yolunu bulmaya çalışıyorum.Eklentileri kullanabilen bir uygulama yaz

Amacım Çekirdek uygulaması var ve piyasada indirilebilir olabilir eklentileri sunmaktır. Çekirdek uygulama daha eklentileri kullandığınız bir SDK tür çoklu uygulamaların bir dizin gibi yani,

eklentileri birbirleriyle etkileşime olmaz (O ... şey, hava durumu, radyo çalar, vb olabilir) .

Android doc Tic Tac Toe örneği yoktur, ancak dış lib ilan etmek ana uygulaması gerekir. Benim dileğim, çekirdek uygulamanın yeni yüklenen eklentileri tespit etmesi ve bunları göstermesidir.

Ben this other question buldum ama cevap yok.

Bunu yapmanın bir yolu var mı?

Düzenleme: Pazarda başka bir uygulama satın alarak kilidi açılabilen uygulamalar da vardır. Nasıl çalışırlar? Henüz ilginç bir şey bulamadım. Sen sen "android unlock" google ne zaman bulmak biliyorum :)

+0

Kilitli olan programlar büyük olasılıkla zaten her şeyi içerecek ve işlevler/düğmeler gizlenecektir. Veya hiç kilidini açma işleminin neden bu kadar hızlı olduğunu merak ettiniz mi? –

+0

Bahse girerim bu işlevler/düğmeler gizlidir, ancak NASIL yaparsınız? "Kilit açma" uygulamasının yüklü olduğunu nasıl anlarsınız? – Jonas

cevap

2

Başka bir uygulama aramak için PackageManager kullanabilirsiniz. Tüm 'eklenti' paketlerinin isimlerini biliyorsanız, her birini bu şekilde kontrol edebilirsiniz.

 PackageManager pm = getPackageManager(); 
        try { 
         ApplicationInfo appInfo = pm.getApplicationInfo("com.package.name.your.looking.for", 0); 
         //if we get to here then the app was found, do whatever you need to do. 
        } catch (NameNotFoundException e) { 
         //app was not found 
        } 
+0

Evet, belki de getInstalledPackages() ile oynamak işi yapacak. Teşekkürler – Jonas

2

Eğer bu düzeni kabul edebilir (MainApp aramak için hangi paket bilmek zorunda) PackageManager.getApplicationInfo (paket, int kullanarak) eklentileri ana app ayrıştırarak istiyorsanız: çalışma zamanında MainApp göndermek Her eklentinin dinlemek zorunda olduğu bir yayın hedefi (sözleşmeyle). Yanıt olarak, her eklenti, mevcut eklentiler hakkında bilgi veren ve onlarla nasıl konuşulacağını anlatan bir MainApp bileşenine doğrudan bir niyet gönderir. Bu şekilde, her yeni bir eklenti oluşturulduğunda MainApp'ı güncellemeniz gerekmez.

4

Bu biraz daha temiz, bu nedenle bir try catch bloğu kullanmak zorunda değilsiniz. Ayrıca, bu, aynı ada sahip bir uygulama oluşturmayı ve bunları telefonlarına manuel olarak yüklemekten kaçınır.

public boolean checkIfAllowed() 
{ 
    PackageManager pm = getPackageManager(); 
    int match = pm.checkSignatures("your.first.package", "your.second.package"); 
    if (match == PackageManager.SIGNATURE_MATCH) 
    { 
     Log.d("ALLOWED?", "signatures match"); 
     return true; 
    } 
    else 
    { 
     Log.d("ALLOWED?", "signatures don't match"); 
     return false; 
    } 
}