Tôi có mã, và nó không hoạt động, vì vậy tôi yêu cầu bất cứ ai giúp tôi. Có rất ít thông tin về vấn đề cụ thể này.Tại sao Android bỏ qua việc tạo Thông báo?
MainActivity
public class MainActivity extends Activity {
public final int PENDING_INTENT_ID = 8;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button clickity = (Button)findViewById(R.id.alarm_button);
clickity.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Calendar now = Calendar.getInstance();
now.add(Calendar.SECOND, 20);
//Create a new PendingIntent used by the Alarm when it activates
Intent intent = new Intent(v.getContext(), AlarmReciever.class);
intent.setAction("SOME_AWESOME_TRIGGER_WORD");
intent.putExtra("info", "This String shows that the info is actually sent correctly");
PendingIntent pendingIntent = PendingIntent.getBroadcast(v.getContext(), PENDING_INTENT_ID, intent, PendingIntent.FLAG_UPDATE_CURRENT|Intent.FILL_IN_DATA);
//Then Create the alarm manager to send this pending intent and set the date to go off
AlarmManager am = (AlarmManager)getSystemService(Activity.ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, now.getTimeInMillis(), pendingIntent);
}
});
}
AlarmReciever (Aware tôi đánh vần nó sai nhưng vì điều đó thế nào, im đi với nó)
public class AlarmReciever extends BroadcastReceiver{
@Override
public void onReceive(Context c, Intent arg1) {
//get a reference to NotificationManager
String ns = Context.NOTIFICATION_SERVICE;
NotificationManager mNotificationManager = (NotificationManager) c.getSystemService(ns);
//Instantiate the notification
CharSequence tickerText = "Hello";
long when = System.currentTimeMillis();
Notification.Builder builder = new Notification.Builder(c)
.setTicker(tickerText)
.setWhen(when)
.setContentTitle(arg1.getStringExtra("info"))
.setContentText("Success!!")
.setAutoCancel(true);
Notification notification = builder.getNotification();
mNotificationManager.notify(0, notification);//note the first argument, the ID should be unique
}
}
Manifest
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="@string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver
android:name="com.testproject.AlarmReciever"
android:enabled="true"
android:exported="false" >
<intent-filter>
</receiver>
</application>
Đó nên là tất cả mọi thứ. Tôi đang cố gắng để chạy nó như là và nó không hiển thị cho tôi bất cứ điều gì. Tôi đang chạy nó trên một trình mô phỏng thực sự là vấn đề.
EDIT: Khi tôi nói nó không hoạt động, tôi có nghĩa là không có gì bật lên. Nó chạy tốt, nhưng thông báo không bao giờ bật lên.
Vấn đề:
Vì vậy, vấn đề này được thu hẹp xuống còn Android chỉ phớt lờ thông báo của tôi. Vấn đề là nó không cho tôi biết tại sao-vì vậy tôi không thể sửa chữa nó. Bất kỳ chuyên gia nào về vấn đề này có thấy điều gì đó sai với mã của tôi để gọi thông báo không? Liệu nó có quan trọng là nó trên một trình giả lập không?
Nếu tôi gỡ bỏ điều đó, tôi nên thay đổi tệp kê khai của mình là ' 'bằng cách nào? –
Andy
Bạn thực sự có thể xóa 'intent.setAction (..)' khỏi mã + loại bỏ phần '' ở tất cả từ tệp kê khai android. –
Tôi vừa làm vậy. Vẫn không hoạt động. Cảm ơn bạn đã chỉ ra. Đó là một sự khởi đầu. – Andy