平台插件化

原创 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

  • 2013年08月04日 12:20
  • 517KB
  • 下载

使用Eclipse的windowbuilder插件进行Windows平台下的可视化编程

前段时间自学了一点Java,然后就手痒地想写点Windows平台下的实用小程序练练手(个人觉得这是病,得治)。不过打开Eclipse之后还是一脸茫然,怎么编写一个带有Win32窗体的Java程序呢? ...

unity3d 跨平台Excel读取插件

  • 2017年09月21日 16:59
  • 1.47MB
  • 下载

[转]多操作系统平台协同开发时 GIT 的注意事项: 不同操作系统中的换行符(不要使用git的换行符自动转换功能,并且,尽可能保证代码的换行符都是unix); 避免使用第三方插件(如 EGit );

PS: 最好的解决方案是执行以下步骤:(比如,有一个 git 库叫做 mygitrepo) 1)增加 .gitattribute 文件 在mygitrepo 下建立一个 .gitattribute...

在Eclipse平台上安装STS插件

  • 2017年06月11日 17:53
  • 348KB
  • 下载

Mac/Windows平台折腾SublimeText3最新版3126(安装必备插件Markdown、Emmet等)

简介前面零零散散记录了不少关于配置SublimeText3的文章,过于分散,本文以SublimeText3最新版本3126为基础,安装常用插件,包括UTF8、Markdown等8个必备插件,如果新增插...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:平台插件化
举报原因:
原因补充:

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