Android/ライブ壁紙作成/ライブ壁紙選択画面表示
提供: 初心者エンジニアの簡易メモ
検索しても出てこず4.0で動かすことに苦労した。 android.service.wallpaper.LIVE_WALLPAPER_CHOOSER なんてのがあっのか
package info.nonip.android.lib.util;
import android.content.Intent;
import android.content.Context;
import android.graphics.Bitmap;
import android.app.WallpaperManager;
import android.graphics.drawable.Drawable;
import android.graphics.Canvas;
import android.util.Log;
import java.io.IOException;
/**
* 壁紙ユーティリティ
*/
public class WallpaperUtil {
// ライブ壁紙選択を開く
public static void execOpenLiveSelecter(Context context) {
try {
// ライブ壁紙選択ウィンドウを直接表示
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setClassName("com.android.wallpaper.livepicker", "com.android.wallpaper.livepicker.LiveWallpaperListActivity");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Log.d("WallpaperUtil", "type=LiveWallpaperListActivity");
// ↑だとandroid v4.0系で以下エラーが出る。AndroidManifest.xmlにActivityを追加してもダメでした。
// android.content.ActivityNotFoundException: Unable to find explicit activity class {com.android.wallpaper.livepicker/com.android.wallpaper.livepicker.LiveWallpaperListActivity}; have you declared this activity in your AndroidManifest.xml?
// <activity android:name="com.android.wallpaper.livepicker.LiveWallpaperListActivity"
// android:label="@string/app_name"
// android:theme="@android:style/Theme.NoTitleBar"
// android:screenOrientation="nosensor"
// android:exported="true"
// >
// <intent-filter>
// <action android:name="android.service.wallpaper.LIVE_WALLPAPER_CHOOSER" />
// <action android:name="android.intent.action.SET_WALLPAPER" />
// <category android:name="android.intent.category.DEFAULT" />
// </intent-filter>
// </activity>
} catch (Exception e) {
// 壁紙選択画面表示(ライブ壁紙選択のみがまず出る。端末によってはライブ壁紙リストが出る)
Intent intent = new Intent();
intent.setAction("android.service.wallpaper.LIVE_WALLPAPER_CHOOSER");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
Log.e("WallpaperUtil", "type=LIVE_WALLPAPER_CHOOSER");
}
}
// 壁紙選択を開く
public static void execOpenSelecter(Context context) {
// 壁紙選択画面表示(壁紙・ライブ壁紙・端末持壁紙がまず出る)
Intent intent = new Intent();
intent.setAction("android.intent.action.SET_WALLPAPER");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
