您的位置:首页 > 移动开发

关于调用Appwidget的一点事

2014-01-11 13:36 337 查看
参考:

/article/9356666.html

http://www.eoeandroid.com/thread-51794-1-1.html

1. 首先是关于java.lang.SecurityException:User 10032 does not have android.permission.BIND_APPWIDGET 的问题,以上两个链接有解决办法;

2. 主干代码

public class AppwidgetTest extends Activity {

private static String TAG = "AppwidgetTest";

private AppWidgetManager m_appwidgetmgr = null;

private AppWidgetHost m_appWidgetHost = null;

private static int HOST_ID = 1048;

private ListView m_list = null;

private LinearLayout m_appContainer = null;

private List<AppWidgetProviderInfo> m_Providers = null;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

Init();

}

void Init() {

m_appContainer = (LinearLayout)findViewById(R.id.appContainer);

m_list = (ListView)findViewById(R.id.ListView01);

m_list.setOnItemClickListener(new OnItemClickListener() {

@Override

public void onItemClick(AdapterView<?> parent, View view,

int position, long id) {

AppWidgetProviderInfo info = m_Providers.get((int) id);

Log.e(TAG, "Label ==================== " + info.label);

Log.e(TAG, " ===================info.provider===" + info.provider);

if (info.provider == null) {

return;

}

//add

int appWidgetId = m_appWidgetHost.allocateAppWidgetId();

Log.e(TAG, "appWidgetId ==================== " + appWidgetId);

m_appwidgetmgr.bindAppWidgetId(appWidgetId, info.provider);

// m_appwidgetmgr.bindAppWidgetId(appWidgetId, new ComponentName("cn.roco.widget.clock",

// "cn.roco.widget.clock.TimeWidgetProvider"));

Log.e(TAG, "=================================xxxxxxxxxx");

AppWidgetProviderInfo appWidget = m_appwidgetmgr.getAppWidgetInfo(appWidgetId);

Log.e(TAG, "================configure=================appWidget=" + appWidget);

if (appWidget == null){

Log.e(TAG, "================configure=================NULL");

return;

}

else {

Log.e(TAG, "======================appWidget.configure=" + appWidget.configure);

Log.e(TAG, "======================appWidget.provider=" + appWidget.provider);

}

if (appWidget != null) {

Log.e(TAG, "minHeight=======" + appWidget.minHeight + ", minWidth===" + appWidget.minWidth);

}

else {

Log.e(TAG, "=================================NULL");

}

if (true) {

AppWidgetHostView hostView = GetHostView(appWidgetId, appWidget);

if (hostView != null) {

hostView.setVisibility(View.VISIBLE);

if (m_appContainer.getChildCount() > 0) {

m_appContainer.removeAllViews();

}

m_appContainer.addView(hostView);

}

}

}

});

m_appWidgetHost = new AppWidgetHost(this, HOST_ID);

m_appWidgetHost.startListening();

m_appwidgetmgr = AppWidgetManager.getInstance(this);

m_Providers = m_appwidgetmgr.getInstalledProviders();

List<String> labels = new ArrayList<String>();

for (int i = 0; i < m_Providers.size(); i++) {

AppWidgetProviderInfo info = m_Providers.get(i);

Log.e(TAG, "Label ==================== " + info.label);

labels.add(info.label);

}

if (m_Providers.size() > 0) {

ListAdapter adapter = new ArrayAdapter<String>(this, R.layout.listitem, labels);

m_list.setAdapter(adapter);

}

}

private AppWidgetHostView GetHostView(int appwidgetId, AppWidgetProviderInfo appwidgetInfo) {

AppWidgetHostView hostView = m_appWidgetHost.createView(this, appwidgetId, appwidgetInfo);

if (hostView == null) {

Log.e(TAG, "===============GetHostView==================NULL");

return null;

}

hostView.setAppWidget(appwidgetId, appwidgetInfo);

return hostView;

}

}

源代码下载地址:http://download.csdn.net/detail/suchto/6836937
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: