Ich habe eine Empfängerklasse, um zu überprüfen, ob das Mobiltelefon am Ladegerät angeschlossen oder nicht angeschlossen ist. Ich möchte einen Ton (mit Benachrichtigung) wiedergeben, wenn das Telefon nicht angeschlossen ist.Meine Empfängerklasse schlägt fehl, wenn ich mein Programm aus dem Hintergrund entferne
folgende ist meine Klasse und es funktioniert richtig. Aber wenn ich mein Programm aus dem Fenster "Zuletzt geöffnete Programme starten" schließe, wird nur dieser Teil geschlossen (ich kann immer noch den Toast "CONNECTED" sehen), warum?
MyReceiver.java
public class MyReceiver extends BroadcastReceiver {
static int num = 0;
public static SharedPreferences sharedPreferences;
Notification notification = new Notification();
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if(action.equals(Intent.ACTION_POWER_CONNECTED)) {
Toast.makeText(context, "CONNECTED", Toast.LENGTH_LONG).show();
}
else if(action.equals(Intent.ACTION_POWER_DISCONNECTED)) {
Toast.makeText(context, "" + num, Toast.LENGTH_LONG).show();
NotificationManager nm = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
String strRingtonePreference = sharedPreferences.getString("song", null);
Toast.makeText(context, "" +strRingtonePreference, Toast.LENGTH_LONG).show();
notification.sound = Uri.parse(strRingtonePreference);
nm.notify(0, notification);
num++;
}
}
und das ist mein mainActivity.java
public class MainActivity extends Activity {
public String path = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button b = (Button) findViewById(R.id.button);
b.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(RingtoneManager.ACTION_RINGTONE_PICKER);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_TYPE, RingtoneManager.TYPE_NOTIFICATION | RingtoneManager.TYPE_RINGTONE);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_SHOW_DEFAULT, true);
intent.putExtra(RingtoneManager.EXTRA_RINGTONE_DEFAULT_URI, RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION));
path = load();
Toast.makeText(getBaseContext(),"" + (path == null), Toast.LENGTH_SHORT).show();
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == RESULT_OK) {
Uri uri = data.getParcelableExtra(RingtoneManager.EXTRA_RINGTONE_PICKED_URI);
if (uri != null) {
String ringTonePath = uri.toString();
TextView t = (TextView)findViewById(R.id.textView);
t.setText(ringTonePath);
save(ringTonePath);
}
}
}
private void save(String ringTonePath) {
MyReceiver.sharedPreferences = getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = MyReceiver.sharedPreferences.edit();
editor.putString("song", ringTonePath);
editor.putInt("times" , 3);
editor.apply();
}
private String load() {
MyReceiver.sharedPreferences = getPreferences(Context.MODE_PRIVATE);
return MyReceiver.sharedPreferences.getString("song", null);
}
}
Manifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.n.receiver" >
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS"/>
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name=".MyReceiver">
<intent-filter>
<action android:name="android.intent.action.ACTION_POWER_CONNECTED" />
<action android:name="android.intent.action.ACTION_POWER_DISCONNECTED" />
</intent-filter>
</receiver>
</application>
</manifest>
Danke für Ihre Hilfe.
Bitte veröffentlichen Sie Ihr Manifest –
ok. Ich habe meine Frage aktualisiert –