android开发笔记之一个电子桌面相册的半成品

现在在做一个桌面相册,也就是一个widget,在桌面随机播放一个图片。功能比较简单,这可以说是一个demo吧,但是离真正做好,还是有差距的,主要是在在刷新界面方面,还有就是实时监听图片内容改变时,刷新界面这二个方面,应该还是有问题,把代码列出来,可以一起分析,研究一下。


1.HYGalleryImageInfo.java-------------图片信息描述类

/** hongyu hexiaoming desk elect gallery 20131220 start **/
public class HYGalleryImageInfo{
	     
	private int id;  
    private String title;  
    private String displayName;  
    private String mimeType;  
    private String path;  
    private long size; 
	
    public HYGalleryImageInfo() {  
        super();  
    }  
   
    public HYGalleryImageInfo(int id, String title, String displayName, String mimeType,String path, long size) {  
        super();  
        
        this.id = id;  
        this.title = title;  
        this.displayName = displayName;  
        this.mimeType = mimeType;  
        this.path = path;  
        this.size = size;  
    }  
  
    public int getId() {  
        return id;  
    }  
  
    public void setId(int id) {  
        this.id = id;  
    }  
  
    public String getTitle() {  
        return title;  
    }  
  
    public void setTitle(String title) {  
        this.title = title;  
    }  
  
    public String getDisplayName() {  
        return displayName;  
    }  
  
    public void setDisplayName(String displayName) {  
        this.displayName = displayName;  
    }  
  
    public String getMimeType() {  
        return mimeType;  
    }  
  
    public void setMimeType(String mimeType) {  
        this.mimeType = mimeType;  
    }  
  
    public String getPath() {  
        return path;  
    }  
  
    public void setPath(String path) {  
        this.path = path;  
    }  
  
    public long getSize() {  
        return size;  
    }  
  
    public void setSize(long size) {  
        this.size = size;  
    }  	
	
}
/** hongyu hexiaoming desk elect gallery 20131220 end **/

2.UtilHelp.java----------工具类,主要是读取图片信息,图片缩略图,界面刷新

/** hongyu hexiaoming desk elect gallery 20131220 start **/

import android.app.AlarmManager;
import android.app.PendingIntent;
import android.appwidget.AppWidgetManager;
import android.content.Context;
import android.content.Intent;
import android.database.Cursor;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.Drawable;
import android.media.ThumbnailUtils;
import android.net.Uri;
import android.os.Handler;
import android.provider.MediaStore;
import android.util.Log;
import android.widget.RemoteViews;

import java.io.File;
import java.util.ArrayList;


public class UtilHelp{
	
	//public static final String uri = "MediaStore.Images.Media.EXTERNAL_CONTENT_URI";
	
	public static final String uri = "content://media/external";
	
	
	
	public static final String TAG = "UtilHelp";
	
	public static final int countMax = 50;
	
	public static final int width_widget = 400;
	public static final int height_widget = 400;
	//public static int mAppWidgetId = 0;
	
	public static ArrayList<HYGalleryImageInfo> arrayList_ImageInfo;
	//public static ArrayList<Drawable> arrayList_Dra;
	//public static HYGalleryImageInfo firstImageInfo = null;
	
	public static int image_count = 0;

	
	public static  HYGalleryImageInfo getFirstGalleryImageInfo(Context context){
		
		HYGalleryImageInfo firstImageInfo = null;
				
		try {	
			Cursor cursor = context.getContentResolver().query(  
	                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,null,null,null,null);  
	        if (cursor != null) {      
	        		cursor.moveToNext();
	                int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID));  
	                String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.TITLE));  
	                String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));  
	                String displayName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME));  
	                String mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.MIME_TYPE));  
	                long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.SIZE)); 
	                
	                firstImageInfo = new HYGalleryImageInfo(id, title, displayName, mimeType,path, size);                    
	            cursor.close();  
	        }
	        
	        return firstImageInfo;
			
		} catch (Exception e) {
			// TODO: handle exception
			Log.i(TAG, e.toString());
			return null;
		}		
	}
	
	public static  ArrayList<HYGalleryImageInfo> getGalleryImageInfo(Context context){
				
		Cursor cursor = context.getContentResolver().query(  
                MediaStore.Images.Media.EXTERNAL_CONTENT_URI,null,null,null,null);  

		int tem = 0;
        if (cursor != null) {  
        	arrayList_ImageInfo = new ArrayList<HYGalleryImageInfo>();  
            while (cursor.moveToNext()) {  
            	tem = tem + 1;
                int id = cursor.getInt(cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID));  
                String title = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.TITLE));  
                String path = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));  
                String displayName = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DISPLAY_NAME));  
                String mimeType = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.MIME_TYPE));  
                long size = cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.SIZE));  
                HYGalleryImageInfo imageInfo = new HYGalleryImageInfo(id, title, displayName, mimeType,path, size);  
                arrayList_ImageInfo.add(imageInfo);
                
                if(tem >= countMax){
                	break;
                }
            }  
            cursor.close();  
        }  
        
        image_count = arrayList_ImageInfo.size();
        
        return arrayList_ImageInfo;  

	}

	public static  HYGalleryImageInfo getRandomGalleryImageInfo(Context context){	
		
		if(image_count == 0){
			return null;
		}
		
		int random_int = (int) (Math.random()*image_count);

		return arrayList_ImageInfo.get(random_int);
	}
	
	
	/** 
     * 根据指定的图像路径和大小来获取缩略图 
     * 此方法有两点好处: 
     *     1. 使用较小的内存空间,第一次获取的bitmap实际上为null,只是为了读取宽度和高度, 
     *        第二次读取的bitmap是根据比例压缩过的图像,第三次读取的bitmap是所要的缩略图。 
     *     2. 缩略图对于原图像来讲没有拉伸,这里使用了2.2版本的新工具ThumbnailUtils,使 
     *        用这个工具生成的图像不会被拉伸。 
     * @param imagePath 图像的路径 
     * @param width 指定输出图像的宽度 
     * @param height 指定输出图像的高度 
     * @return 生成的缩略图 
     */  
    public static Bitmap getImageThumbnail(String imagePath, int width, int height) {  
        Bitmap bitmap = null;  
        BitmapFactory.Options options = new BitmapFactory.Options();  
        options.inJustDecodeBounds = true;  
        // 获取这个图片的宽和高,注意此处的bitmap为null  
        bitmap = BitmapFactory.decodeFile(imagePath, options);  
        options.inJustDecodeBounds = false; // 设为 false  
        // 计算缩放比  
        int h = options.outHeight;  
        int w = options.outWidth;  
        int beWidth = w / width;  
        int beHeight = h / height;  
        int be = 1;  
        if (beWidth < beHeight) {  
            be = beWidth;  
        } else {  
            be = beHeight;  
        }  
        if (be <= 0) {  
            be = 1;  
        }  
        options.inSampleSize = be;  
        // 重新读入图片,读取缩放后的bitmap,注意这次要把options.inJustDecodeBounds 设为 false  
        bitmap = BitmapFactory.decodeFile(imagePath, options);  
        // 利用ThumbnailUtils来创建缩略图,这里要指定要缩放哪个Bitmap对象  
        bitmap = ThumbnailUtils.extractThumbnail(bitmap, width, height,  
                ThumbnailUtils.OPTIONS_RECYCLE_INPUT);  
        return bitmap;  
    }  
    
    public static void updateHYDeskEleGalleryWidget(HYGalleryImageInfo imageInfo,int mAppWidgetId,Context context){
    	
    	RemoteViews views = new RemoteViews(context.getPackageName(), R.layout.hy_dest_ele_gallery);
    	
    	if(imageInfo == null){
    		views.setImageViewResource(R.id.gallery_widget, R.drawable.ic_launcher);	
    		Log.i(TAG, "imageInfo == null------1");
    	}else{
        	String imagePath = imageInfo.getPath();	
        	Log.i(TAG, "updateHYDeskEleGalleryWidget---imagePath:"+imagePath);
        	Bitmap bitmap = UtilHelp.getImageThumbnail(imagePath, width_widget, height_widget);
        	if(bitmap == null){    		
        		views.setImageViewResource(R.id.gallery_widget, R.drawable.ic_launcher);
        		Log.i(TAG, "bitmap == null------2");
        	}else{
        		views.setImageViewBitmap(R.id.gallery_widget, bitmap);
		   		 File file = new File(imagePath);
		   		 if( file != null && file.isFile() == true){ 			 
		   			 Intent intent_click = new Intent();		 
		   			 intent_click.setAction(android.content.Intent.ACTION_VIEW);
		   			 intent_click.setDataAndType(Uri.fromFile(file), "image/*");	     
		   		     intent_click.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,mAppWidgetId);
		   		     PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,intent_click, 0);
		   		     views.setOnClickPendingIntent(R.id.gallery_widget, pendingIntent);
		   		     Log.i(TAG, "updateHYDeskEleGalleryWidget---intent_click:"+file.getName().toString());
		   		 } 	
        	}        	   		
    	}  	
		AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
		appWidgetManager.updateAppWidget(mAppWidgetId, views);	     	
    }
    
    public static void sendIntentUpdateWidget(Context context){
    	
    	Intent intent = new Intent("UPDATE_HY_DESK_ELE_GALLERY");  
    	PendingIntent pi = PendingIntent.getBroadcast(context,0,intent,0);    
    	AlarmManager am = (AlarmManager)context.getSystemService(context.ALARM_SERVICE); 
    	am.setRepeating(AlarmManager.RTC_WAKEUP,System.currentTimeMillis(),1*10000,pi); 
    	
    }
    
    public static void registerContentObservers(Context context,Handler handler) {
    	
//    	HYContentObserver co = new HYContentObserver(context,handler); 
//        Uri myUri = Uri.parse(uri); 
//        context.getContentResolver().registerContentObserver(myUri,true,co); 
    	

        
    }
    
    public static void unregisterContentObserver(Context context) {
//    	HYContentObserver co = new HYContentObserver(context,new Handler()); 
//    	context.getContentResolver().unregisterContentObserver(co);
    }

}
/** hongyu hexiaoming desk elect gallery 20131220 end **/

3.HYDeskEleGallerySharedPre.java-----xml数据保存

/************************************************************************************************* 
* 版权所有 (C)2013,  HONGYU 
*  
* 文件名称:HYDeskEleGallerySharedPre.java 
* 内容摘要:xml数据存储类 
* 当前版本: 
* 作         者:  hexiaoming
* 完成日期:2013-12-21 
* 修改记录: 
* 修改日期: 
* 版   本  号: 
* 修   改  人: 
* 修改内容: 
************************************************************************************************/  
package com.hy.hy_dest_ele_gallery;

import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;

/** hongyu hexiaoming desk elect gallery 20131220 start **/

public class HYDeskEleGallerySharedPre  {
	
	private  Context context = null;  
	private  SharedPreferences sp = null;  
	private Editor editor = null;  
	      
	public static final String MySharedPreferencesName= "HYDeskEleGallerySharedPre";  
	      
	public static final String Key_mAppWidgetId = "Key_mAppWidgetId";  
	public static final int Value_mAppWidgetId = -1;  
	      
	public static final String Key_isHave = "Key_isHave";   
	public static final boolean Value_isHave = false;  
	      

	public HYDeskEleGallerySharedPre(Context context){  
		this.context = context;  
		this.sp = this.context.getSharedPreferences(MySharedPreferencesName,0);  
		this.editor =  sp.edit();   
	    }  
	      
	      
	    public int get_mAppWidgetId()  
	    {         
	        int mAppWidgetId = sp.getInt(Key_mAppWidgetId, Value_mAppWidgetId);          
	        return mAppWidgetId;       
	    }  
	      
	    public void set_mAppWidgetId(int mAppWidgetId)  
	    {         
	        editor.putInt(Key_mAppWidgetId, mAppWidgetId);  
	        editor.commit();  
	    }  
	      
	    public boolean get_isHave()  
	    {         
	        boolean isHave = sp.getBoolean(Key_isHave, Value_isHave);       
	        return isHave;          
	    }  
	      
	    public void set_isHave(boolean isHave)  
	    {         
	        editor.putBoolean(Key_isHave, isHave);  
	        editor.commit();  
	    }  
	      
}
/** hongyu hexiaoming desk elect gallery 20131220 end **/

4.HYDeskEleGalleryConf.jva--------创建widget

package com.hy.hy_dest_ele_gallery;

/** hongyu hexiaoming desk elect gallery 20131220 start **/


import android.app.Activity;
import android.appwidget.AppWidgetManager;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;

public class HYDeskEleGalleryConf extends Activity  {
	
	public static final String TAG = "HYDeskEleGalleryConf";
	
	private int mAppWidgetId; 
	private boolean isHaveSP = false;
	private int mAppWidgetIdSP = -1;  
	

	private HYDeskEleGallerySharedPre myHYSharedPre = null;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		
		Log.i(TAG,"HYDeskEleGalleryConf---onCreate");  
         
        setResult(RESULT_CANCELED);  
        
        myHYSharedPre = new HYDeskEleGallerySharedPre(HYDeskEleGalleryConf.this);
        isHaveSP = myHYSharedPre.get_isHave();
        mAppWidgetIdSP = myHYSharedPre.get_mAppWidgetId();
	        
		if(isHaveSP == false && mAppWidgetIdSP == -1){
			
			// Find the widget id from the intent.  
			Intent intent = getIntent();  
			Bundle extras = intent.getExtras();  
			if (extras != null) {  
				mAppWidgetId = extras.getInt(AppWidgetManager.EXTRA_APPWIDGET_ID,AppWidgetManager.INVALID_APPWIDGET_ID);  
			}  
		  
			// If they gave us an intent without the widget id, just bail.  
			if (mAppWidgetId == AppWidgetManager.INVALID_APPWIDGET_ID) {  
				finish();  
			}  
		
			HYGalleryImageInfo imageInfo = UtilHelp.getFirstGalleryImageInfo(HYDeskEleGalleryConf.this);        
			UtilHelp.updateHYDeskEleGalleryWidget(imageInfo, mAppWidgetId, HYDeskEleGalleryConf.this);	        
			UtilHelp.sendIntentUpdateWidget(HYDeskEleGalleryConf.this);
		
		
			// return OK  
		    Intent resultValue = new Intent();  
		    resultValue.putExtra(AppWidgetManager.EXTRA_APPWIDGET_ID,mAppWidgetId);            
		    setResult(RESULT_OK, resultValue);  
		    
		    
		    //HYDeskEleGallerySharedPre myHYSharedPre = new HYDeskEleGallerySharedPre(HYDeskEleGalleryConf.this);
		    myHYSharedPre.set_isHave(true);
		    myHYSharedPre.set_mAppWidgetId(mAppWidgetId);
		    	        
		    finish();      	
		}else{
			Toast.makeText(getApplicationContext(), R.string.widget_exist,Toast.LENGTH_SHORT).show();	        	
			finish();    
		}
	}	
}
/** hongyu hexiaoming desk elect gallery 20131220 end **/

5.HYDeskEleGalleryAppWidgetProvider.java------widget数据处理

package com.hy.hy_dest_ele_gallery;


/** hongyu hexiaoming desk elect gallery 20131220 start **/

import android.appwidget.AppWidgetManager;
import android.appwidget.AppWidgetProvider;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;


public class HYDeskEleGalleryAppWidgetProvider extends AppWidgetProvider  {
	
	public static final String TAG = "HYDeskEleGalleryAppWidgetProvider";

	@Override
	public void onAppWidgetOptionsChanged(Context context,
			AppWidgetManager appWidgetManager, int appWidgetId,
			Bundle newOptions) {
		// TODO Auto-generated method stub
		super.onAppWidgetOptionsChanged(context, appWidgetManager, appWidgetId,
				newOptions);
		
		Log.i(TAG, "onAppWidgetOptionsChanged");  
	}

	@Override
	public void onDeleted(Context context, int[] appWidgetIds) {
		// TODO Auto-generated method stub
		super.onDeleted(context, appWidgetIds);
		
		 final int N = appWidgetIds.length; 
        for (int i = 0; i < N; i++) {  
            int appWidgetId = appWidgetIds[i];  
            Log.i(TAG, "this is [" + appWidgetId + "] onDelete!");  
        }  
        Log.i(TAG, "onDeleted");  
        
        HYDeskEleGallerySharedPre myHYSharedPre = new HYDeskEleGallerySharedPre(context);
        myHYSharedPre.set_isHave(false);
        myHYSharedPre.set_mAppWidgetId(-1);
        
        //UtilHelp.unregisterContentObserver(context);
	}

	@Override
	public void onDisabled(Context context) {
		// TODO Auto-generated method stub
		super.onDisabled(context);
	}

	@Override
	public void onEnabled(Context context) {
		// TODO Auto-generated method stub
		super.onEnabled(context);
		Log.i(TAG, "onEnabled");  
	}

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		super.onReceive(context, intent);
		Log.i(TAG, "onReceive"); 
	}

	@Override
	public void onUpdate(Context context, AppWidgetManager appWidgetManager,
			int[] appWidgetIds) {
		// TODO Auto-generated method stub
		super.onUpdate(context, appWidgetManager, appWidgetIds);
		
		 final int N = appWidgetIds.length;  
	        for (int i = 0; i < N; i++) {  
	            int appWidgetId = appWidgetIds[i];  
	            Log.i(TAG, "this is [" + appWidgetId + "] onUpdate!");  	  
	        }  	
	        
	      Log.i(TAG, "onUpdate");     
	      
	      //UtilHelp.registerContentObservers(context, new Handler());
	}
	

}
/** hongyu hexiaoming desk elect gallery 20131220 end **/

6.UpdateHYDeskEleGalleryReceiver.java------更新widget的BroadcastReceiver

package com.hy.hy_dest_ele_gallery;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.util.Log;

/** hongyu hexiaoming desk elect gallery 20131220 start **/

public class UpdateHYDeskEleGalleryReceiver extends BroadcastReceiver{
	
	public static final String TAG = "UpdateHYDeskEleGalleryReceiver";

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		
		Log.i(TAG, "UpdateHYDeskEleGalleryReceiver---onReceive");
		
		HYDeskEleGallerySharedPre myHYSharedPre = new HYDeskEleGallerySharedPre(context);
		boolean isHaveSP = myHYSharedPre.get_isHave();
		int mAppWidgetIdSP = myHYSharedPre.get_mAppWidgetId();		
		
		if(isHaveSP == true && mAppWidgetIdSP != -1){
			
//			if(UtilHelp.arrayList_ImageInfo == null){
//				UtilHelp.getGalleryImageInfo(context);
//			}		
			UtilHelp.getGalleryImageInfo(context);
			HYGalleryImageInfo imageInfo= UtilHelp.getRandomGalleryImageInfo(context);
			
			UtilHelp.updateHYDeskEleGalleryWidget(imageInfo, mAppWidgetIdSP, context);
		}
	}	
}
/** hongyu hexiaoming desk elect gallery 20131220 end **/

7.HYBootBroadcastReceiver.java----------开机启动BroadcastReceiver

package com.hy.hy_dest_ele_gallery;

/** hongyu hexiaoming desk elect gallery 20131220 start **/

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;


public class HYBootBroadcastReceiver extends BroadcastReceiver{
	
	public static final String ACTION_COMP = "android.intent.action.BOOT_COMPLETED"; 

	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		 if(intent.getAction().equals(ACTION_COMP))  
         { 
			 HYDeskEleGallerySharedPre myHYSharedPre = new HYDeskEleGallerySharedPre(context);
			 boolean isHaveSP = myHYSharedPre.get_isHave();
			 int mAppWidgetIdSP = myHYSharedPre.get_mAppWidgetId();
			 if(isHaveSP == true || mAppWidgetIdSP != -1){
				 HYGalleryImageInfo imageInfo = UtilHelp.getFirstGalleryImageInfo(context);
				 UtilHelp.updateHYDeskEleGalleryWidget(imageInfo, mAppWidgetIdSP, context);			 
			 }
			 
			 UtilHelp.sendIntentUpdateWidget(context);
			 
			 UtilHelp.registerContentObservers(context, null);
         }
	}
}

/** hongyu hexiaoming desk elect gallery 20131220 end **/

8.HYContentObserver.java-------内容监听器,这个还没有搞定,其实内容监听是没有问题,关键是没有找到注册的地方,有一点点怪

package com.hy.hy_dest_ele_gallery;

/** hongyu hexiaoming desk elect gallery 20131220 start **/

import android.content.Context;
import android.database.ContentObserver;
import android.net.Uri;
import android.os.Handler;
import android.util.Log;


public class HYContentObserver extends ContentObserver{

	public static final String TAG = "HYContentObserver";
	private Context context = null;
	
	public HYContentObserver(Context context,Handler handler) {
		super(handler);
		// TODO Auto-generated constructor stub	
		this.context = context;	
	}


	@Override
	public void onChange(boolean selfChange, Uri uri) {
		// TODO Auto-generated method stub
		super.onChange(selfChange, uri);
	}


	@Override
	public void onChange(boolean selfChange) {
		// TODO Auto-generated method stub
		super.onChange(selfChange);
		
//		Log.i(TAG, "HYContentObserver---onChange");
//		
//		 HYDeskEleGallerySharedPre myHYSharedPre = new HYDeskEleGallerySharedPre(context);
//		 boolean isHaveSP = myHYSharedPre.get_isHave();
//		 int mAppWidgetIdSP = myHYSharedPre.get_mAppWidgetId();
//		 if(isHaveSP == true || mAppWidgetIdSP != -1){
//			 HYGalleryImageInfo imageInfo = UtilHelp.getFirstGalleryImageInfo(context);
//			 UtilHelp.updateHYDeskEleGalleryWidget(imageInfo, mAppWidgetIdSP, context);			 
//		 }	
	}
}


//Uri smsUri = Uri.parse("content://sms"); 
//getContentResolver().registerContentObserver(smsUri,true,smsContentObserver); 
/** hongyu hexiaoming desk elect gallery 20131220 end **/

9.res/layout/hy_dest_ele_gallery.xml-----布局文件

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/gallery_widget"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:clickable="true"/>

10.res/xml/hy_dest_ele_gallery_widget_provider.xml-------widget配置文件

<appwidget-provider xmlns:android="http://schemas.android.com/apk/res/android"  
	android:minWidth="82dp" 
	android:minHeight="82dp"  
	android:updatePeriodMillis="86400000" 
	android:initialLayout="@layout/hy_dest_ele_gallery"  
	android:configure="com.hy.hy_dest_ele_gallery.HYDeskEleGalleryConf">  
</appwidget-provider>  

11.AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.hy.hy_dest_ele_gallery"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    
     <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        
        <receiver android:name=".HYDeskEleGalleryAppWidgetProvider">  
            <intent-filter>  
                <action android:name="android.appwidget.action.APPWIDGET_UPDATE" />  
            </intent-filter>  
            <meta-data android:name="android.appwidget.provider"  
                android:resource="@xml/hy_dest_ele_gallery_widget_provider" />  
        </receiver>         
        
		<activity android:name=".HYDeskEleGalleryConf">  
			<intent-filter>  
				<action android:name="android.appwidget.action.APPWIDGET_CONFIGURE" />  
			</intent-filter>  
		</activity>   
		
		<receiver android:name=".UpdateHYDeskEleGalleryReceiver">  
			<intent-filter>  
				<action android:name="UPDATE_HY_DESK_ELE_GALLERY" />  
			</intent-filter>  
		</receiver>  
		
		<receiver android:name=".HYBootBroadcastReceiver">  
			<intent-filter>  
				<action android:name="android.intent.action.BOOT_COMPLETED"></action> 
			</intent-filter>  
		</receiver>  
		
    </application>

</manifest>



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

hfreeman2008

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值