android studio项目用于保存flash消息和通知
我已经看过基本的android studio教程,现在我想开发一个可以保存flash消息和通知的应用程序。有人请告诉我怎么做,并提供有用的链接android studio项目用于保存flash消息和通知,android,notifications,save,Android,Notifications,Save,我已经看过基本的android studio教程,现在我想开发一个可以保存flash消息和通知的应用程序。有人请告诉我怎么做,并提供有用的链接 NotificationService.java 打包通知 导入android.app.Notification 导入android.content.Context 导入android.content.Intent 导入android.graphics.Bitmap 导入android.os.Bundle 导入android.service.notifi
导入android.app.Notification
导入android.content.Context
导入android.content.Intent
导入android.graphics.Bitmap
导入android.os.Bundle
导入android.service.notification.NotificationListenerService
导入android.service.notification.StatusBarNotification
导入android.util.Log
导入android.support.v4.content.LocalBroadcastManager
导入java.io.ByteArrayOutputStream
public class NotificationService extends NotificationListenerService {
Context context;
@Override
public void onCreate() {
super.onCreate();
context = getApplicationContext();
}
@Override
public void onNotificationPosted(StatusBarNotification sbn) {
String pack = sbn.getPackageName();
String ticker ="";
if(sbn.getNotification().tickerText !=null) {
ticker = sbn.getNotification().tickerText.toString();
}
Bundle extras = sbn.getNotification().extras;
String title = extras.getString("android.title");
String text = extras.getCharSequence("android.text").toString();
int id1 = extras.getInt(Notification.EXTRA_SMALL_ICON);
Bitmap id = sbn.getNotification().largeIcon;
Log.i("Package",pack);
Log.i("Ticker",ticker);
Log.i("Title",title);
Log.i("Text",text);
Intent msgrcv = new Intent("Msg");
msgrcv.putExtra("package", pack);
msgrcv.putExtra("ticker", ticker);
msgrcv.putExtra("title", title);
msgrcv.putExtra("text", text);
if(id != null) {
ByteArrayOutputStream stream = new ByteArrayOutputStream();
id.compress(Bitmap.CompressFormat.PNG, 100, stream);
byte[] byteArray = stream.toByteArray();
msgrcv.putExtra("icon",byteArray);
}
LocalBroadcastManager.getInstance(context).sendBroadcast(msgrcv);
}
@Override
public void onNotificationRemoved(StatusBarNotification sbn) {
Log.i("Msg","Notification Removed");
}
}package android.notifications;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.support.v4.content.LocalBroadcastManager;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import java.util.ArrayList;
/**
* Created by mukesh on 19/5/15.
*/
public class MainActivity extends Activity {
ListView list;
CustomListAdapter adapter;
ArrayList<model> modelList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
modelList = new ArrayList<model>();
adapter = new CustomListAdapter(getApplicationContext(), modelList);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
LocalBroadcastManager.getInstance(this).registerReceiver(onNotice, new IntentFilter("Msg"));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main, menu);//Menu Resource, Menu
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.action_settings:
Intent intent = new Intent(
"android.settings.ACTION_NOTIFICATION_LISTENER_SETTINGS");
startActivity(intent);
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private BroadcastReceiver onNotice= new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// String pack = intent.getStringExtra("package");
String title = intent.getStringExtra("title");
String text = intent.getStringExtra("text");
//int id = intent.getIntExtra("icon",0);
Context remotePackageContext = null;
try {
// remotePackageContext = getApplicationContext().createPackageContext(pack, 0);
// Drawable icon = remotePackageContext.getResources().getDrawable(id);
// if(icon !=null) {
// ((ImageView) findViewById(R.id.imageView)).setBackground(icon);
// }
byte[] byteArray =intent.getByteArrayExtra("icon");
Bitmap bmp = null;
if(byteArray !=null) {
bmp = BitmapFactory.decodeByteArray(byteArray, 0, byteArray.length);
}
Model model = new Model();
model.setName(title +" " +text);
model.setImage(bmp);
if(modelList !=null) {
modelList.add(model);
adapter.notifyDataSetChanged();
}else {
modelList = new ArrayList<model>();
modelList.add(model);
adapter = new CustomListAdapter(getApplicationContext(), modelList);
list=(ListView)findViewById(R.id.list);
list.setAdapter(adapter);
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
}
package.android.notifications;
导入android.app.Activity;
导入android.content.BroadcastReceiver;
导入android.content.Context;
导入android.content.Intent;
导入android.content.IntentFilter;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.Bundle;
导入android.support.v4.content.LocalBroadcastManager;
导入android.view.Menu;
导入android.view.MenuItem;
导入android.widget.ListView;
导入java.util.ArrayList;
/**
*穆克什于2015年5月19日创作。
*/
公共类MainActivity扩展活动{
列表视图列表;
自定义列表适配器;
ArrayList模型列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
modelList=新的ArrayList();
adapter=新的CustomListAdapter(getApplicationContext(),modelList);
list=(ListView)findViewById(R.id.list);
list.setAdapter(适配器);
LocalBroadcastManager.getInstance(this.registerReceiver)(onNotice,newintentfilter(“Msg”);
}
@凌驾
公共布尔onCreateOptions菜单(菜单菜单){
getMenuInflater().inflate(R.menu.menu_main,menu);//菜单资源,菜单
返回true;
}
@凌驾
公共布尔值onOptionsItemSelected(MenuItem项){
开关(item.getItemId()){
案例R.id.action\u设置:
意向=新意向(
“android.settings.ACTION_NOTIFICATION_LISTENER_settings”);
星触觉(意向);
返回true;
违约:
返回super.onOptionsItemSelected(项目);
}
}
private BroadcastReceiver onNotice=新的BroadcastReceiver(){
@凌驾
public void onReceive(上下文、意图){
//字符串包=intent.getStringExtra(“包”);
字符串标题=intent.getStringExtra(“标题”);
String text=intent.getStringExtra(“文本”);
//int id=intent.getIntExtra(“图标”,0);
Context-remotePackageContext=null;
试试{
//remotePackageContext=getApplicationContext().createPackageContext(包,0);
//可绘制图标=remotePackageContext.getResources().getDrawable(id);
//如果(图标!=null){
//((ImageView)findViewById(R.id.ImageView)).setBackground(图标);
// }
字节[]byteArray=intent.getByteArrayExtra(“图标”);
位图bmp=null;
如果(byteArray!=null){
bmp=BitmapFactory.decodeByteArray(byteArray,0,byteArray.length);
}
模型=新模型();
model.setName(title+“”+text);
setImage(bmp);
如果(modelList!=null){
添加(模型);
adapter.notifyDataSetChanged();
}否则{
modelList=新的ArrayList();
添加(模型);
adapter=新的CustomListAdapter(getApplicationContext(),modelList);
list=(ListView)findViewById(R.id.list);
list.setAdapter(适配器);
}
}捕获(例外e){
e、 printStackTrace();
}
}
};
}
package=“android.notifications”>
package="android.notifications">
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme">
<activity
android:name="android.notifications.MainActivity"
android:configChanges="keyboardHidden|orientation|screenSize"
android:label="@string/app_name">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<service
android:name="android.notifications.NotificationService"
android:label="@string/app_name"
android:permission="android.permission.BIND_NOTIFICATION_LISTENER_SER VICE">
<intent-filter>
<action android:name="android.service.notification.NotificationLi stenerService" />
</intent-filter>
</service>
<receiver android:name="android.notifications.IncomingSms">
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<receiver android:name=".ServiceReceiver" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
</application>