メディアの音量をミュートおよびミュート解除するトグル ウィジェットを設計しています。新しいアプリをインストールするまではうまく機能します...その後、機能しなくなります。強制的に閉じるなどはありません。押しても何もしません。(ウィジェットを削除して再度追加すると、再び機能し始めます。) log cat を使用すると、アプリに関連するメッセージが表示されません。
以下にコードを投稿しましたが、新しいアプリをインストールしたときにホーム画面がどうなるか、基本的にどこでトラブルシューティングできるかを概念的に教えていただければ、それも役に立ちます。
ご協力いただきありがとうございます。私は何日もこれにいましたが、それを理解することはできません. 私はAndroid 4.04 Galaxy Nexusの在庫を持っています。
public class JCrashWidget extends AppWidgetProvider {
public static String ACTION_WIDGET_RECEIVER = "com.JCrash.widget.ACTION_WIDGET_RECEIVER";
public static String ACTION_WIDGET_CONFIGURE = "com.JCrash.widget.ACTION_WIDGET_CONFIGURE";
private RemoteViews remoteViews = new RemoteViews("com.JCrash", R.layout.widgetstyle1 );
public void onUpdate(Context context, AppWidgetManager appWidgetManager, int[] appWidgetIds){
super.onUpdate(context, appWidgetManager, appWidgetIds);
Intent mediaClick = new Intent(context, JCrashWidget.class);
mediaClick.setAction(ACTION_WIDGET_RECEIVER);
PendingIntent pendingIntent = PendingIntent.getBroadcast(context, 0, mediaClick, 0);
remoteViews.setOnClickPendingIntent(R.id.headphonesid, pendingIntent);
appWidgetManager.updateAppWidget(appWidgetIds,remoteViews );
}
public void onReceive(Context context, Intent intent)
{
super.onReceive(context, intent);
AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
AppWidgetManager appWidgetManager = AppWidgetManager.getInstance(context);
ComponentName cn = new ComponentName(context, JCrashWidget.class);
int cVol = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
SharedPreferences myPrefs = context.getSharedPreferences("myPrefs", Context.MODE_WORLD_WRITEABLE);
SharedPreferences.Editor prefsEditor = myPrefs.edit();
if (intent.getAction().equals(ACTION_WIDGET_RECEIVER)) {
if (cVol == 0)
{
cVol = myPrefs.getInt("PREVIOUS_VOLUME", 0);
remoteViews.setImageViewResource(R.id.headphonesid,R.drawable.headphones);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, cVol,
AudioManager.FLAG_SHOW_UI);
cVol = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
}
else
{
prefsEditor.putInt("PREVIOUS_VOLUME", cVol);
prefsEditor.commit();
cVol = myPrefs.getInt("PREVIOUS_VOLUME", 0);
remoteViews.setImageViewResource(R.id.headphonesid,R.drawable.headphones_off);
audioManager.setStreamVolume(AudioManager.STREAM_MUSIC, 0, AudioManager.FLAG_SHOW_UI);
cVol = audioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
}
AppWidgetManager.getInstance(context).updateAppWidget(cn, remoteViews);
}
}
}