做销售,一般都是有了产品,市场宣传开道,然后销售人员找产品对应行业的客户去,打电话一家家的跟踪。
如果没有自己的产品,也没有代理别人的产品,那么卖什么?一般会去卖个业务培训、业务咨询、流程优化咨询。然后从这些靠嘴靠PPT/EXCEL/WORD/VISIO的业务中落实到产品中,往往会落实为一套软件产品或者软件定制开发项目。然后如法继续炮制。
公司日常沟通,有邮件有MSN有短信有手机有座机。公司日常管理,有OA待办事项任务管理。公司还有财务,还有进销存管理。
公司架设一个网站,选择域名,选择虚拟主机或者自己买个机器托管到机房,自己开发个网站或者让别人定制个网站,或者搞个免费的网站建设工具配置一下。
实施要每天的项目实施计划、实施心得日志、会议纪要、需求&BUG列表、培训报告、总结报告。
服务支持也需要呼叫中心、工单管理、FAQ管理。在网站论坛上也做支持,在Q-Q-群也做支持。
研发也需要需求管理&BUG工具,把从客户、服务部门、实施部门、销售部门,甚至直接来自于老板的指示,都放进这个工具里面,然后开始执行修改开发,需要有自己的开发任务管理工具。
而销售部门,需要记录每个人的目前客户跟踪列表、客户的每个联系人的联系方式,哪些销售线索成交了,哪些销售线索失败了(客户明确表示不购买或者已 经购买了其他的),每天的跟踪日志列表在哪里。哪些客户是新开拓的客户,哪些客户是老客户新产生的销售线索,哪些客户是老客户推荐来的新客户。
对于大客户,一般都是团队销售,这个大客户的销售线索当做一个大项目,项目由多个人参与。每个人和客户中的每个联系人说什么话了,都要让项目组的其 他人看到。这个项目中的各个联系人的明关系、暗关系都描述清楚,这个项目的每步推进计划,每个人在项目中的任务是什么,都需要明确,其实是团队共享该项 目,有团队项目任务。
这就是销售部门一般的管理。对于零售进商超、零售走连锁专卖店、走批发市场、走代理,那是另外的各种销售方式。社会的主流销售方式就这么几种。都有不同的软件工具。
有了这些工具,还有的上线会员工具。会员有优惠,会员有积分。积分可以换礼品,可以抵现金,可以抽奖,可以参加会员活动。
还有的开始上线维护老客户关系的工具。先搞日常的一些提醒,日常发些关怀短信和邮件,询问询问有啥不满意的或需求建议,日常联系着点,不断了关系。
也有人开始搞老客户再挖掘,比如销售人员主动联系老客户,鼓动老客户再购买、升级购买以旧换新购买、交叉购买,鼓动老客户推荐朋友购买,鼓动老客户发些产品使用感受文章影响一下想要购买的潜在客户或者购买了产品但使用效果不佳的成交客户。
这里面有很多软件工具,都是切入市场的机会。
做些小模块,做成B/S模式放到网上做应用托管服务,支付宝支付或汇款支付,很便宜,也不用打单,网上做宣传,找代理分销,不用实施,不用培训,不用出差,网上用Q-Q、BBS做支持,小日子就过呗。
1家客户1月100块钱,不算多吧。1年1000块。你发展100个,就是1年10万块。难道你没有信心连100个客户都发展不来。网上做宣传,找代理分销,总是可以的。如果你有200个客户,那么1年就是20万。你想不想?
走出作坊,走进作坊。每个人都想冲出去或者冲进来,就看你想怎么活。
最简单的,主要是实现Parcelable的接口,重写那个CREATOR
测试用的接收信息Activity
package com.nico; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.os.Parcelable; public class Test extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent i = getIntent(); Person p = i.getParcelableExtra("yes"); System.out.println("---->"+p.name); System.out.println("---->"+p.map.size()); } }
发送的Activity
package com.nico; import java.util.HashMap; import android.app.Activity; import android.content.Intent; import android.os.Bundle; public class TestNew extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); Intent intent = new Intent(); Person p = new Person(); p.map = new HashMap<String,String>(); p.map.put("yes", "ido"); p.name="ok"; intent.putExtra("yes", p); intent.setClass(this, Test.class); startActivity(intent); } }
Parcelable的实现类
package com.nico; import java.util.HashMap; import android.os.Parcel; import android.os.Parcelable; public class Person implements Parcelable { public HashMap<String,String> map = new HashMap<String,String> (); public String name ; @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeMap(map); dest.writeString(name); } public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() { @Override public Person createFromParcel(Parcel source) { Person p = new Person(); p.map=source.readHashMap(HashMap.class.getClassLoader()); p.name=source.readString(); return p; } @Override public Person[] newArray(int size) { // TODO Auto-generated method stub return null; } }; }
简述:结构化描述intent匹配的信息。包含:action,categories and data(via type,scheme ,path),还有priority, to order multiple matching filters.
IntentFilter 中如果action为空,则视为通配符,如果type为空,则intent必须不设type,否则匹配不上。
data被分为3个属性:type,scheme,authority/path 任何设置的属性intent必须匹配上。
设置了scheme 而没设type,则intent也必须类似,不能设置type,也不能是content: URI.
设置了type而没设scheme:将匹配上没有URI的intent,或者content:,file:的uri。
设置了authority:必须指定一个或多个相关联的schemes
设置了path:唏嘘指定一个或多个相关联的schemes
匹配规则:
IntentFilter 匹配Intent的上的条件:
Action : 值相同 ,或则IntentFilter未指定action.
DataType:. 系统通过调用Intent.resolve(ContentResolver)获取type,通配符*
在Intent/IntentFilter的MIME type中使用,区分大小写
DataScheme:系统通过调用Intent. getData() and Uri.getScheme())获取scheme, 区分大小写
DataAuthority:必须有一个dataScheme匹配上且authority值匹配上,或者IntentFilter没有定义。 Intent. getData() and Uri.getAuthority()获取authority.
DataPath: scheme and authority必须先匹配上 ntent. getData() and Uri.getPath(),获取. 或者IntentFilter没有定义
Categories:all of the categories in the Intent match categories given in the filter 多余的Categorie,不影响intent匹配,如果IntentFilter
没有指定Categorie,则只能匹配上没有Categorie的intent。
常用intent列表:
Android Intent 用法汇总
显示网页
- <activity android:name="BrowserActivity" android:label="Browser" android:launchMode="singleTask" android:alwaysRetainTaskState="true" android:configChanges="orientation|keyboardHidden" android:theme="@style/BrowserTheme">
- <!--
For these schemes were not particular MIME type has been
supplied, we are a good candidate.
-->
- <intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:scheme="about" />
</intent-filter>
- <!--
For these schemes where any of these particular MIME types
have been supplied, we are a good candidate.
-->
- <intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
<data android:scheme="http" />
<data android:scheme="https" />
<data android:mimeType="text/html" />
<data android:mimeType="text/plain" />
<data android:mimeType="application/xhtml+xml" />
<data android:mimeType="application/vnd.wap.xhtml+xml" />
</intent-filter>
- <!--
We are also the main entry point of the browser.
-->
- <intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.LAUNCHER" />
<category android:name="android.intent.category.BROWSABLE" />
</intent-filter>
- <intent-filter>
<action android:name="android.intent.action.WEB_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="" />
<data android:scheme="http" />
<data android:scheme="https" />
</intent-filter>
- <intent-filter>
<action android:name="android.intent.action.WEB_SEARCH" />
<action android:name="android.intent.action.MEDIA_SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
- <intent-filter>
<action android:name="android.intent.action.SEARCH" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
<meta-data android:name="android.app.searchable" android:resource="@xml/searchable" />
- <intent-filter>
<action android:name="android.net.http.NETWORK_STATE" />
<action android:name="android.intent.action.PROXY_CHANGE" />
</intent-filter>
</activity>
1. Uri uri = Uri.parse("http://google.com");
2. Intent it = new Intent(Intent.ACTION_VIEW, uri);
3. startActivity(it);
显示地图
1. Uri uri = Uri.parse("geo:38.899533,-77.036476");
2. Intent it = new Intent(Intent.ACTION_VIEW, uri);
3. startActivity(it);
4. //其他 geo URI 範例
5. //geo:latitude,longitude
6. //geo:latitude,longitude?z=zoom
7. //geo:0,0?q=my+street+address
8. //geo:0,0?q=business+near+city
9. //google.streetview:cbll=lat,lng&cbp=1,yaw,,pitch,zoom&mz=mapZoom
路径规划
1. Uri uri = Uri.parse("http://maps.google.com/maps?f=d&saddr=startLat%20startLng&daddr=endLat%20endLng&hl=en");
2. Intent it = new Intent(Intent.ACTION_VIEW, uri);
3. startActivity(it);
4. //where startLat, startLng, endLat, endLng are a long with 6 decimals like: 50.123456
打电话
1. //叫出拨号程序
2. Uri uri = Uri.parse("tel:0800000123");
3. Intent it = new Intent(Intent.ACTION_DIAL, uri);
4. startActivity(it);
1. //直接打电话出去
2. Uri uri = Uri.parse("tel:0800000123");
3. Intent it = new Intent(Intent.ACTION_CALL, uri);
4. startActivity(it);
5. //用這個,要在 AndroidManifest.xml 中,加上
6. //<uses-permission id="android.permission.CALL_PHONE" />
传送SMS/MMS
1. //调用短信程序
2. Intent it = new Intent(Intent.ACTION_VIEW, uri);
3. it.putExtra("sms_body", "The SMS text");
4. it.setType("vnd.android-dir/mms-sms");
5. startActivity(it);
1. //传送消息
2. Uri uri = Uri.parse("smsto://0800000123");
3. Intent it = new Intent(Intent.ACTION_SENDTO, uri);
4. it.putExtra("sms_body", "The SMS text");
5. startActivity(it);
1. //传送 MMS
2. Uri uri = Uri.parse("content://media/external/images/media/23");
3. Intent it = new Intent(Intent.ACTION_SEND);
4. it.putExtra("sms_body", "some text");
5. it.putExtra(Intent.EXTRA_STREAM, uri);
6. it.setType("image/png");
7. startActivity(it);
传送 Email
1. Uri uri = Uri.parse("mailto:xxx@abc.com");
2. Intent it = new Intent(Intent.ACTION_SENDTO, uri);
3. startActivity(it);
1. Intent it = new Intent(Intent.ACTION_SEND);
2. it.putExtra(Intent.EXTRA_EMAIL, "me@abc.com");
3. it.putExtra(Intent.EXTRA_TEXT, "The email body text");
4. it.setType("text/plain");
5. startActivity(Intent.createChooser(it, "Choose Email Client"));
1. Intent it=new Intent(Intent.ACTION_SEND);
2. String[] tos={"me@abc.com"};
3. String[] ccs={"you@abc.com"};
4. it.putExtra(Intent.EXTRA_EMAIL, tos);
5. it.putExtra(Intent.EXTRA_CC, ccs);
6. it.putExtra(Intent.EXTRA_TEXT, "The email body text");
7. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
8. it.setType("message/rfc822");
9. startActivity(Intent.createChooser(it, "Choose Email Client"));
1. //传送附件
2. Intent it = new Intent(Intent.ACTION_SEND);
3. it.putExtra(Intent.EXTRA_SUBJECT, "The email subject text");
4. it.putExtra(Intent.EXTRA_STREAM, "file:///sdcard/mysong.mp3");
5. sendIntent.setType("audio/mp3");
6. startActivity(Intent.createChooser(it, "Choose Email Client"));
播放多媒体
Uri uri = Uri.parse("file:///sdcard/song.mp3");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
it.setType("audio/mp3");
startActivity(it);
Uri uri = Uri.withAppendedPath(MediaStore.Audio.Media.INTERNAL_CONTENT_URI, "1");
Intent it = new Intent(Intent.ACTION_VIEW, uri);
startActivity(it);
Market 相关
1. //寻找某个应用
2. Uri uri = Uri.parse("market://search?q=pname:pkg_name");
3. Intent it = new Intent(Intent.ACTION_VIEW, uri);
4. startActivity(it);
5. //where pkg_name is the full package path for an application
1. //显示某个应用的相关信息
2. Uri uri = Uri.parse("market://details?id=app_id");
3. Intent it = new Intent(Intent.ACTION_VIEW, uri);
4. startActivity(it);
5. //where app_id is the application ID, find the ID
6. //by clicking on your application on Market home
7. //page, and notice the ID from the address bar
Uninstall 应用程序
1. Uri uri = Uri.fromParts("package", strPackageName, null);
2. Intent it = new Intent(Intent.ACTION_DELETE, uri);
3. startActivity(it);