平台插件化

原创 2016年06月01日 21:02:28
package com.example.text;


import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.content.Intent;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;


import com.ant.liao.GifView;
import com.squareup.picasso.Picasso;


public class MainActivity extends Activity {


private String url="http://t11.baidu.com/it/u=38767480,4056423661&fm=59";
private String path="http://img2.imgtn.bdimg.com/it/u=3853115189,3802116727&fm=21&gp=0.jpg";
private ImageView imageview;
private GifView gf1;
private List<PluginBean> plugins;
private LinearLayout line;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
line = (LinearLayout) findViewById(R.id.line);
attachPlugin(findPlugins());
}

/**
* 加载插件列表
* @param plugins
*/
private void attachPlugin(final List<PluginBean> plugins){
Log.e("ydt", "   ");
Log.e("ydt", "----- 列出插件");
this.plugins=plugins;
for(final PluginBean plugin:plugins){
Button btn=new Button(this);
line.addView(btn);
btn.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
Intent it=new Intent();
System.out.println("======");
it.setAction(plugin.getPakageName());
//这里,不会把插件的窗体附加到主程序中,纯粹无用的演示
startActivity(it);
}
});
}
}
/**
* 查找插件
* @return
*/
private List<PluginBean> findPlugins(){
plugins = new ArrayList<PluginBean>();
//遍历包名,来获取插件
PackageManager pm=getPackageManager();
List<PackageInfo> pkgs=pm.getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES);
for(PackageInfo pkg :pkgs){
//包名
String packageName=pkg.packageName;
String sharedUserId= pkg.sharedUserId;
//sharedUserId是开发时约定好的,这样判断是否为自己人2
if(!"org.igeek.plugintest".equals(sharedUserId)||"com.example.text".equals(packageName))
continue;
//进程名
//String prcessName=pkg.applicationInfo.processName;
//label,也就是appName了
String label=pm.getApplicationLabel(pkg.applicationInfo).toString();
System.out.println(label+"=======");
PluginBean plug=new PluginBean();
plug.setLabel(label);
plug.setPakageName(packageName);
plugins.add(plug);
}
return plugins;
}
}

Android插件化完美实现代码资源加载及原理讲解 附可运行demo

*本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布 。 我们通过前4篇的分解,分别将插件化设计到的知识点全部梳理了一遍,如果没有看过的,建议先看前面4篇 1. Binder机制...
  • yulong0809
  • yulong0809
  • 2017年03月01日 18:02
  • 8590

实用开发平台对比分析

1 概述 随着软件行业日新月异的发展,使用传统的开发工具已经不能满足现有程序员的诉求,每个项目都要从零开始,代码无复用率;所有的基础功能需要一行一点的敲代码,一个预置基本功能模型,可以快速生成代码的开...
  • aeaiesb
  • aeaiesb
  • 2016年11月14日 09:20
  • 760

关于基于插件式开发的软件项目

                                           基于插件式开发的软件项目(一)    在实际开发项目中,在一些中大型项目,为了提高团队开发效率,提高软件的扩展性以...
  • liwenlong26363
  • liwenlong26363
  • 2010年11月13日 13:54
  • 1853

WordPress CMS化的十二个必备插件

转:http://developer.51cto.com/art/200911/160239.htm 经过过去几年的成长,WordPress已经不再仅仅是一个博客平台了。人们现在把它当作一个CM...
  • Quincylk
  • Quincylk
  • 2016年01月25日 15:44
  • 2656

前端组件库

http://180.168.156.212:2176/CUI/demo
  • heqinghua217
  • heqinghua217
  • 2017年03月06日 12:25
  • 152

C++插件化开发,插件化系统

http://www.cnblogs.com/sld666666/p/3519467.html     1.为什么需要插件化系统   “编程就是构建一个一个自己的小积木, 然后用自己的小积木搭...
  • u011473714
  • u011473714
  • 2016年05月21日 00:00
  • 915

APP项目如何与插件化无缝结合(三)

目录: APP项目如何与插件化无缝结合(一)  APP项目如何与插件化无缝结合(二)  APP项目如何与插件化无缝结合(三)  搬砖码字不易,转载请注明转自:http://www.jianshu....
  • u011176685
  • u011176685
  • 2016年07月23日 20:50
  • 1457

推荐十几款Firefox强大的Web开发插件

开发工具 Web Developer 1.1.8   https://addons.mozilla.org/en-US/firefox/addon/60 by chrispederick The We...
  • dz45693
  • dz45693
  • 2010年02月04日 20:18
  • 2402

c#组件和控件的区别

在.NET中有组件、控件和用户控件。其实从字面上已经可以理解各自的不同了。但是具体关系其实是从类的继承上来区别的。一般控件派生于:Control类,所以从此类派生出的称之为控件。一般组件派生于:Com...
  • luolunz
  • luolunz
  • 2013年07月27日 21:30
  • 2461

Android插件化总结

瓶颈大多数朋友开始接触这个问题是因为 App 爆棚了,方法数超过了一个 Dex 最大方法数 65535 的上限,因而便有了插件化的概念,将一个 App 划分为多个插件(Apk 或相关格式)插件化动态加...
  • u010321471
  • u010321471
  • 2017年01月19日 16:18
  • 2224
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:平台插件化
举报原因:
原因补充:

(最多只允许输入30个字)