Commit 078e07da authored by wangqinghua's avatar wangqinghua

物品领用

parent bd58aed6
/**
* Automatically generated file. DO NOT MODIFY
*/
package io.ionic.smart19.starter;
public final class BuildConfig {
public static final boolean DEBUG = false;
public static final String APPLICATION_ID = "io.ionic.smart19.starter";
public static final String BUILD_TYPE = "release";
public static final String FLAVOR = "";
public static final int VERSION_CODE = 40309;
public static final String VERSION_NAME = "4.3.9";
}
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package io.ionic.smart19.starter;
public final class R {
public static final class attr {
/**
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*/
public static final int coordinatorLayoutStyle=0x7f010000;
/**
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*/
public static final int font=0x7f010001;
/**
* <p>May be a string value, using '\\;' to escape characters such as
* '\\n' or '\\uxxxx' for a unicode character;
*/
public static final int fontProviderAuthority=0x7f010002;
/**
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*/
public static final int fontProviderCerts=0x7f010003;
/**
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>async</td><td>1</td><td></td></tr>
* <tr><td>blocking</td><td>0</td><td></td></tr>
* </table>
*/
public static final int fontProviderFetchStrategy=0x7f010004;
/**
* <p>May be an integer value, such as "<code>100</code>".
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>forever</td><td>ffffffff</td><td></td></tr>
* </table>
*/
public static final int fontProviderFetchTimeout=0x7f010005;
/**
* <p>May be a string value, using '\\;' to escape characters such as
* '\\n' or '\\uxxxx' for a unicode character;
*/
public static final int fontProviderPackage=0x7f010006;
/**
* <p>May be a string value, using '\\;' to escape characters such as
* '\\n' or '\\uxxxx' for a unicode character;
*/
public static final int fontProviderQuery=0x7f010007;
/**
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>italic</td><td>1</td><td></td></tr>
* <tr><td>normal</td><td>0</td><td></td></tr>
* </table>
*/
public static final int fontStyle=0x7f010008;
/**
* <p>May be an integer value, such as "<code>100</code>".
*/
public static final int fontWeight=0x7f010009;
/**
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*/
public static final int keylines=0x7f01000a;
/**
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*/
public static final int layout_anchor=0x7f01000b;
/**
* <p>Must be one or more (separated by '|') of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>bottom</td><td>50</td><td></td></tr>
* <tr><td>center</td><td>11</td><td></td></tr>
* <tr><td>center_horizontal</td><td>1</td><td></td></tr>
* <tr><td>center_vertical</td><td>10</td><td></td></tr>
* <tr><td>clip_horizontal</td><td>8</td><td></td></tr>
* <tr><td>clip_vertical</td><td>80</td><td></td></tr>
* <tr><td>end</td><td>800005</td><td></td></tr>
* <tr><td>fill</td><td>77</td><td></td></tr>
* <tr><td>fill_horizontal</td><td>7</td><td></td></tr>
* <tr><td>fill_vertical</td><td>70</td><td></td></tr>
* <tr><td>left</td><td>3</td><td></td></tr>
* <tr><td>right</td><td>5</td><td></td></tr>
* <tr><td>start</td><td>800003</td><td></td></tr>
* <tr><td>top</td><td>30</td><td></td></tr>
* </table>
*/
public static final int layout_anchorGravity=0x7f01000c;
/**
* <p>May be a string value, using '\\;' to escape characters such as
* '\\n' or '\\uxxxx' for a unicode character;
*/
public static final int layout_behavior=0x7f01000d;
/**
* <p>Must be one or more (separated by '|') of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>all</td><td>77</td><td></td></tr>
* <tr><td>bottom</td><td>50</td><td></td></tr>
* <tr><td>end</td><td>800005</td><td></td></tr>
* <tr><td>left</td><td>3</td><td></td></tr>
* <tr><td>none</td><td>0</td><td></td></tr>
* <tr><td>right</td><td>5</td><td></td></tr>
* <tr><td>start</td><td>800003</td><td></td></tr>
* <tr><td>top</td><td>30</td><td></td></tr>
* </table>
*/
public static final int layout_dodgeInsetEdges=0x7f01000e;
/**
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>bottom</td><td>50</td><td></td></tr>
* <tr><td>end</td><td>800005</td><td></td></tr>
* <tr><td>left</td><td>3</td><td></td></tr>
* <tr><td>none</td><td>0</td><td></td></tr>
* <tr><td>right</td><td>5</td><td></td></tr>
* <tr><td>start</td><td>800003</td><td></td></tr>
* <tr><td>top</td><td>30</td><td></td></tr>
* </table>
*/
public static final int layout_insetEdge=0x7f01000f;
/**
* <p>May be an integer value, such as "<code>100</code>".
*/
public static final int layout_keyline=0x7f010010;
/**
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
* <p>May be a color value, in the form of "<code>#<i>rgb</i></code>",
* "<code>#<i>argb</i></code>", "<code>#<i>rrggbb</i></code>", or
* "<code>#<i>aarrggbb</i></code>".
*/
public static final int statusBarBackground=0x7f010011;
}
public static final class bool {
public static final int abc_action_bar_embed_tabs=0x7f020000;
}
public static final class color {
public static final int notification_action_color_filter=0x7f030000;
public static final int notification_icon_bg_color=0x7f030001;
public static final int notification_material_background_media_default_color=0x7f030002;
public static final int primary_text_default_material_dark=0x7f030003;
public static final int ripple_material_light=0x7f030004;
public static final int secondary_text_default_material_dark=0x7f030005;
public static final int secondary_text_default_material_light=0x7f030006;
}
public static final class dimen {
public static final int compat_button_inset_horizontal_material=0x7f040000;
public static final int compat_button_inset_vertical_material=0x7f040001;
public static final int compat_button_padding_horizontal_material=0x7f040002;
public static final int compat_button_padding_vertical_material=0x7f040003;
public static final int compat_control_corner_material=0x7f040004;
public static final int notification_action_icon_size=0x7f040005;
public static final int notification_action_text_size=0x7f040006;
public static final int notification_big_circle_margin=0x7f040007;
public static final int notification_content_margin_start=0x7f040008;
public static final int notification_large_icon_height=0x7f040009;
public static final int notification_large_icon_width=0x7f04000a;
public static final int notification_main_column_padding_top=0x7f04000b;
public static final int notification_media_narrow_margin=0x7f04000c;
public static final int notification_right_icon_size=0x7f04000d;
public static final int notification_right_side_padding_top=0x7f04000e;
public static final int notification_small_icon_background_padding=0x7f04000f;
public static final int notification_small_icon_size_as_large=0x7f040010;
public static final int notification_subtext_size=0x7f040011;
public static final int notification_top_pad=0x7f040012;
public static final int notification_top_pad_large_text=0x7f040013;
}
public static final class drawable {
public static final int notification_action_background=0x7f050000;
public static final int notification_bg=0x7f050001;
public static final int notification_bg_low=0x7f050002;
public static final int notification_bg_low_normal=0x7f050003;
public static final int notification_bg_low_pressed=0x7f050004;
public static final int notification_bg_normal=0x7f050005;
public static final int notification_bg_normal_pressed=0x7f050006;
public static final int notification_icon_background=0x7f050007;
public static final int notification_template_icon_bg=0x7f050008;
public static final int notification_template_icon_low_bg=0x7f050009;
public static final int notification_tile_bg=0x7f05000a;
public static final int notify_panel_notification_icon_bg=0x7f05000b;
public static final int screen=0x7f05000c;
}
public static final class id {
public static final int action0=0x7f060000;
public static final int action_container=0x7f060001;
public static final int action_divider=0x7f060002;
public static final int action_image=0x7f060003;
public static final int action_text=0x7f060004;
public static final int actions=0x7f060005;
public static final int all=0x7f060006;
public static final int async=0x7f060007;
public static final int blocking=0x7f060008;
public static final int bottom=0x7f060009;
public static final int cancel_action=0x7f06000a;
public static final int center=0x7f06000b;
public static final int center_horizontal=0x7f06000c;
public static final int center_vertical=0x7f06000d;
public static final int chronometer=0x7f06000e;
public static final int clip_horizontal=0x7f06000f;
public static final int clip_vertical=0x7f060010;
public static final int end=0x7f060011;
public static final int end_padder=0x7f060012;
public static final int fill=0x7f060013;
public static final int fill_horizontal=0x7f060014;
public static final int fill_vertical=0x7f060015;
public static final int forever=0x7f060016;
public static final int icon=0x7f060017;
public static final int icon_group=0x7f060018;
public static final int info=0x7f060019;
public static final int italic=0x7f06001a;
public static final int left=0x7f06001b;
public static final int line1=0x7f06001c;
public static final int line3=0x7f06001d;
public static final int media_actions=0x7f06001e;
public static final int none=0x7f06001f;
public static final int normal=0x7f060020;
public static final int notification_background=0x7f060021;
public static final int notification_main_column=0x7f060022;
public static final int notification_main_column_container=0x7f060023;
public static final int right=0x7f060024;
public static final int right_icon=0x7f060025;
public static final int right_side=0x7f060026;
public static final int start=0x7f060027;
public static final int status_bar_latest_event_content=0x7f060028;
public static final int tag_transition_group=0x7f060029;
public static final int text=0x7f06002a;
public static final int text2=0x7f06002b;
public static final int time=0x7f06002c;
public static final int title=0x7f06002d;
public static final int top=0x7f06002e;
}
public static final class integer {
public static final int cancel_button_image_alpha=0x7f070000;
public static final int status_bar_notification_info_maxnum=0x7f070001;
}
public static final class layout {
public static final int notification_action=0x7f080000;
public static final int notification_action_tombstone=0x7f080001;
public static final int notification_media_action=0x7f080002;
public static final int notification_media_cancel_action=0x7f080003;
public static final int notification_template_big_media=0x7f080004;
public static final int notification_template_big_media_custom=0x7f080005;
public static final int notification_template_big_media_narrow=0x7f080006;
public static final int notification_template_big_media_narrow_custom=0x7f080007;
public static final int notification_template_custom_big=0x7f080008;
public static final int notification_template_icon_group=0x7f080009;
public static final int notification_template_lines_media=0x7f08000a;
public static final int notification_template_media=0x7f08000b;
public static final int notification_template_media_custom=0x7f08000c;
public static final int notification_template_part_chronometer=0x7f08000d;
public static final int notification_template_part_time=0x7f08000e;
}
public static final class mipmap {
public static final int icon=0x7f090000;
}
public static final class string {
public static final int activity_name=0x7f0a0000;
public static final int app_name=0x7f0a0001;
public static final int launcher_name=0x7f0a0002;
public static final int status_bar_notification_info_overflow=0x7f0a0003;
}
public static final class style {
public static final int TextAppearance_Compat_Notification=0x7f0b0000;
public static final int TextAppearance_Compat_Notification_Info=0x7f0b0001;
public static final int TextAppearance_Compat_Notification_Info_Media=0x7f0b0002;
public static final int TextAppearance_Compat_Notification_Line2=0x7f0b0003;
public static final int TextAppearance_Compat_Notification_Line2_Media=0x7f0b0004;
public static final int TextAppearance_Compat_Notification_Media=0x7f0b0005;
public static final int TextAppearance_Compat_Notification_Time=0x7f0b0006;
public static final int TextAppearance_Compat_Notification_Time_Media=0x7f0b0007;
public static final int TextAppearance_Compat_Notification_Title=0x7f0b0008;
public static final int TextAppearance_Compat_Notification_Title_Media=0x7f0b0009;
public static final int Widget_Compat_NotificationActionContainer=0x7f0b000a;
public static final int Widget_Compat_NotificationActionText=0x7f0b000b;
public static final int Widget_Support_CoordinatorLayout=0x7f0b000c;
}
public static final class styleable {
/**
* Attributes that can be used with a CoordinatorLayout.
* <p>Includes the following attributes:</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Attribute</th><th>Description</th></tr>
* <tr><td><code>{@link #CoordinatorLayout_keylines io.ionic.smart19.starter:keylines}</code></td><td></td></tr>
* <tr><td><code>{@link #CoordinatorLayout_statusBarBackground io.ionic.smart19.starter:statusBarBackground}</code></td><td></td></tr>
* </table>
* @see #CoordinatorLayout_keylines
* @see #CoordinatorLayout_statusBarBackground
*/
public static final int[] CoordinatorLayout={
0x7f01000a, 0x7f010011
};
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#keylines}
* attribute's value can be found in the {@link #CoordinatorLayout} array.
*
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*
* @attr name io.ionic.smart19.starter:keylines
*/
public static final int CoordinatorLayout_keylines=0;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#statusBarBackground}
* attribute's value can be found in the {@link #CoordinatorLayout} array.
*
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
* <p>May be a color value, in the form of "<code>#<i>rgb</i></code>",
* "<code>#<i>argb</i></code>", "<code>#<i>rrggbb</i></code>", or
* "<code>#<i>aarrggbb</i></code>".
*
* @attr name io.ionic.smart19.starter:statusBarBackground
*/
public static final int CoordinatorLayout_statusBarBackground=1;
/**
* Attributes that can be used with a CoordinatorLayout_Layout.
* <p>Includes the following attributes:</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Attribute</th><th>Description</th></tr>
* <tr><td><code>{@link #CoordinatorLayout_Layout_android_layout_gravity android:layout_gravity}</code></td><td></td></tr>
* <tr><td><code>{@link #CoordinatorLayout_Layout_layout_anchor io.ionic.smart19.starter:layout_anchor}</code></td><td></td></tr>
* <tr><td><code>{@link #CoordinatorLayout_Layout_layout_anchorGravity io.ionic.smart19.starter:layout_anchorGravity}</code></td><td></td></tr>
* <tr><td><code>{@link #CoordinatorLayout_Layout_layout_behavior io.ionic.smart19.starter:layout_behavior}</code></td><td></td></tr>
* <tr><td><code>{@link #CoordinatorLayout_Layout_layout_dodgeInsetEdges io.ionic.smart19.starter:layout_dodgeInsetEdges}</code></td><td></td></tr>
* <tr><td><code>{@link #CoordinatorLayout_Layout_layout_insetEdge io.ionic.smart19.starter:layout_insetEdge}</code></td><td></td></tr>
* <tr><td><code>{@link #CoordinatorLayout_Layout_layout_keyline io.ionic.smart19.starter:layout_keyline}</code></td><td></td></tr>
* </table>
* @see #CoordinatorLayout_Layout_android_layout_gravity
* @see #CoordinatorLayout_Layout_layout_anchor
* @see #CoordinatorLayout_Layout_layout_anchorGravity
* @see #CoordinatorLayout_Layout_layout_behavior
* @see #CoordinatorLayout_Layout_layout_dodgeInsetEdges
* @see #CoordinatorLayout_Layout_layout_insetEdge
* @see #CoordinatorLayout_Layout_layout_keyline
*/
public static final int[] CoordinatorLayout_Layout={
0x010100b3, 0x7f01000b, 0x7f01000c, 0x7f01000d,
0x7f01000e, 0x7f01000f, 0x7f010010
};
/**
* <p>This symbol is the offset where the {@link android.R.attr#layout_gravity}
* attribute's value can be found in the {@link #CoordinatorLayout_Layout} array.
*
* <p>Must be one or more (separated by '|') of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>bottom</td><td>50</td><td></td></tr>
* <tr><td>center</td><td>11</td><td></td></tr>
* <tr><td>center_horizontal</td><td>1</td><td></td></tr>
* <tr><td>center_vertical</td><td>10</td><td></td></tr>
* <tr><td>clip_horizontal</td><td>8</td><td></td></tr>
* <tr><td>clip_vertical</td><td>80</td><td></td></tr>
* <tr><td>end</td><td>800005</td><td></td></tr>
* <tr><td>fill</td><td>77</td><td></td></tr>
* <tr><td>fill_horizontal</td><td>7</td><td></td></tr>
* <tr><td>fill_vertical</td><td>70</td><td></td></tr>
* <tr><td>left</td><td>3</td><td></td></tr>
* <tr><td>right</td><td>5</td><td></td></tr>
* <tr><td>start</td><td>800003</td><td></td></tr>
* <tr><td>top</td><td>30</td><td></td></tr>
* </table>
*
* @attr name android:layout_gravity
*/
public static final int CoordinatorLayout_Layout_android_layout_gravity=0;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#layout_anchor}
* attribute's value can be found in the {@link #CoordinatorLayout_Layout} array.
*
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*
* @attr name io.ionic.smart19.starter:layout_anchor
*/
public static final int CoordinatorLayout_Layout_layout_anchor=1;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#layout_anchorGravity}
* attribute's value can be found in the {@link #CoordinatorLayout_Layout} array.
*
* <p>Must be one or more (separated by '|') of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>bottom</td><td>50</td><td></td></tr>
* <tr><td>center</td><td>11</td><td></td></tr>
* <tr><td>center_horizontal</td><td>1</td><td></td></tr>
* <tr><td>center_vertical</td><td>10</td><td></td></tr>
* <tr><td>clip_horizontal</td><td>8</td><td></td></tr>
* <tr><td>clip_vertical</td><td>80</td><td></td></tr>
* <tr><td>end</td><td>800005</td><td></td></tr>
* <tr><td>fill</td><td>77</td><td></td></tr>
* <tr><td>fill_horizontal</td><td>7</td><td></td></tr>
* <tr><td>fill_vertical</td><td>70</td><td></td></tr>
* <tr><td>left</td><td>3</td><td></td></tr>
* <tr><td>right</td><td>5</td><td></td></tr>
* <tr><td>start</td><td>800003</td><td></td></tr>
* <tr><td>top</td><td>30</td><td></td></tr>
* </table>
*
* @attr name io.ionic.smart19.starter:layout_anchorGravity
*/
public static final int CoordinatorLayout_Layout_layout_anchorGravity=2;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#layout_behavior}
* attribute's value can be found in the {@link #CoordinatorLayout_Layout} array.
*
* <p>May be a string value, using '\\;' to escape characters such as
* '\\n' or '\\uxxxx' for a unicode character;
*
* @attr name io.ionic.smart19.starter:layout_behavior
*/
public static final int CoordinatorLayout_Layout_layout_behavior=3;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#layout_dodgeInsetEdges}
* attribute's value can be found in the {@link #CoordinatorLayout_Layout} array.
*
* <p>Must be one or more (separated by '|') of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>all</td><td>77</td><td></td></tr>
* <tr><td>bottom</td><td>50</td><td></td></tr>
* <tr><td>end</td><td>800005</td><td></td></tr>
* <tr><td>left</td><td>3</td><td></td></tr>
* <tr><td>none</td><td>0</td><td></td></tr>
* <tr><td>right</td><td>5</td><td></td></tr>
* <tr><td>start</td><td>800003</td><td></td></tr>
* <tr><td>top</td><td>30</td><td></td></tr>
* </table>
*
* @attr name io.ionic.smart19.starter:layout_dodgeInsetEdges
*/
public static final int CoordinatorLayout_Layout_layout_dodgeInsetEdges=4;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#layout_insetEdge}
* attribute's value can be found in the {@link #CoordinatorLayout_Layout} array.
*
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>bottom</td><td>50</td><td></td></tr>
* <tr><td>end</td><td>800005</td><td></td></tr>
* <tr><td>left</td><td>3</td><td></td></tr>
* <tr><td>none</td><td>0</td><td></td></tr>
* <tr><td>right</td><td>5</td><td></td></tr>
* <tr><td>start</td><td>800003</td><td></td></tr>
* <tr><td>top</td><td>30</td><td></td></tr>
* </table>
*
* @attr name io.ionic.smart19.starter:layout_insetEdge
*/
public static final int CoordinatorLayout_Layout_layout_insetEdge=5;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#layout_keyline}
* attribute's value can be found in the {@link #CoordinatorLayout_Layout} array.
*
* <p>May be an integer value, such as "<code>100</code>".
*
* @attr name io.ionic.smart19.starter:layout_keyline
*/
public static final int CoordinatorLayout_Layout_layout_keyline=6;
/**
* Attributes that can be used with a FontFamily.
* <p>Includes the following attributes:</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Attribute</th><th>Description</th></tr>
* <tr><td><code>{@link #FontFamily_fontProviderAuthority io.ionic.smart19.starter:fontProviderAuthority}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamily_fontProviderCerts io.ionic.smart19.starter:fontProviderCerts}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamily_fontProviderFetchStrategy io.ionic.smart19.starter:fontProviderFetchStrategy}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamily_fontProviderFetchTimeout io.ionic.smart19.starter:fontProviderFetchTimeout}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamily_fontProviderPackage io.ionic.smart19.starter:fontProviderPackage}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamily_fontProviderQuery io.ionic.smart19.starter:fontProviderQuery}</code></td><td></td></tr>
* </table>
* @see #FontFamily_fontProviderAuthority
* @see #FontFamily_fontProviderCerts
* @see #FontFamily_fontProviderFetchStrategy
* @see #FontFamily_fontProviderFetchTimeout
* @see #FontFamily_fontProviderPackage
* @see #FontFamily_fontProviderQuery
*/
public static final int[] FontFamily={
0x7f010002, 0x7f010003, 0x7f010004, 0x7f010005,
0x7f010006, 0x7f010007
};
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#fontProviderAuthority}
* attribute's value can be found in the {@link #FontFamily} array.
*
* <p>May be a string value, using '\\;' to escape characters such as
* '\\n' or '\\uxxxx' for a unicode character;
*
* @attr name io.ionic.smart19.starter:fontProviderAuthority
*/
public static final int FontFamily_fontProviderAuthority=0;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#fontProviderCerts}
* attribute's value can be found in the {@link #FontFamily} array.
*
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*
* @attr name io.ionic.smart19.starter:fontProviderCerts
*/
public static final int FontFamily_fontProviderCerts=1;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#fontProviderFetchStrategy}
* attribute's value can be found in the {@link #FontFamily} array.
*
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>async</td><td>1</td><td></td></tr>
* <tr><td>blocking</td><td>0</td><td></td></tr>
* </table>
*
* @attr name io.ionic.smart19.starter:fontProviderFetchStrategy
*/
public static final int FontFamily_fontProviderFetchStrategy=2;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#fontProviderFetchTimeout}
* attribute's value can be found in the {@link #FontFamily} array.
*
* <p>May be an integer value, such as "<code>100</code>".
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>forever</td><td>ffffffff</td><td></td></tr>
* </table>
*
* @attr name io.ionic.smart19.starter:fontProviderFetchTimeout
*/
public static final int FontFamily_fontProviderFetchTimeout=3;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#fontProviderPackage}
* attribute's value can be found in the {@link #FontFamily} array.
*
* <p>May be a string value, using '\\;' to escape characters such as
* '\\n' or '\\uxxxx' for a unicode character;
*
* @attr name io.ionic.smart19.starter:fontProviderPackage
*/
public static final int FontFamily_fontProviderPackage=4;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#fontProviderQuery}
* attribute's value can be found in the {@link #FontFamily} array.
*
* <p>May be a string value, using '\\;' to escape characters such as
* '\\n' or '\\uxxxx' for a unicode character;
*
* @attr name io.ionic.smart19.starter:fontProviderQuery
*/
public static final int FontFamily_fontProviderQuery=5;
/**
* Attributes that can be used with a FontFamilyFont.
* <p>Includes the following attributes:</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Attribute</th><th>Description</th></tr>
* <tr><td><code>{@link #FontFamilyFont_android_font android:font}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamilyFont_android_fontWeight android:fontWeight}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamilyFont_android_fontStyle android:fontStyle}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamilyFont_font io.ionic.smart19.starter:font}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamilyFont_fontStyle io.ionic.smart19.starter:fontStyle}</code></td><td></td></tr>
* <tr><td><code>{@link #FontFamilyFont_fontWeight io.ionic.smart19.starter:fontWeight}</code></td><td></td></tr>
* </table>
* @see #FontFamilyFont_android_font
* @see #FontFamilyFont_android_fontWeight
* @see #FontFamilyFont_android_fontStyle
* @see #FontFamilyFont_font
* @see #FontFamilyFont_fontStyle
* @see #FontFamilyFont_fontWeight
*/
public static final int[] FontFamilyFont={
0x01010532, 0x01010533, 0x0101053f, 0x7f010001,
0x7f010008, 0x7f010009
};
/**
* <p>This symbol is the offset where the {@link android.R.attr#font}
* attribute's value can be found in the {@link #FontFamilyFont} array.
*
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*
* @attr name android:font
*/
public static final int FontFamilyFont_android_font=0;
/**
* <p>This symbol is the offset where the {@link android.R.attr#fontWeight}
* attribute's value can be found in the {@link #FontFamilyFont} array.
*
* <p>May be an integer value, such as "<code>100</code>".
*
* @attr name android:fontWeight
*/
public static final int FontFamilyFont_android_fontWeight=1;
/**
* <p>This symbol is the offset where the {@link android.R.attr#fontStyle}
* attribute's value can be found in the {@link #FontFamilyFont} array.
*
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>italic</td><td>1</td><td></td></tr>
* <tr><td>normal</td><td>0</td><td></td></tr>
* </table>
*
* @attr name android:fontStyle
*/
public static final int FontFamilyFont_android_fontStyle=2;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#font}
* attribute's value can be found in the {@link #FontFamilyFont} array.
*
* <p>May be a reference to another resource, in the form
* "<code>@[+][<i>package</i>:]<i>type</i>/<i>name</i></code>" or a theme
* attribute in the form
* "<code>?[<i>package</i>:]<i>type</i>/<i>name</i></code>".
*
* @attr name io.ionic.smart19.starter:font
*/
public static final int FontFamilyFont_font=3;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#fontStyle}
* attribute's value can be found in the {@link #FontFamilyFont} array.
*
* <p>Must be one of the following constant values.</p>
* <table>
* <colgroup align="left" />
* <colgroup align="left" />
* <colgroup align="left" />
* <tr><th>Constant</th><th>Value</th><th>Description</th></tr>
* <tr><td>italic</td><td>1</td><td></td></tr>
* <tr><td>normal</td><td>0</td><td></td></tr>
* </table>
*
* @attr name io.ionic.smart19.starter:fontStyle
*/
public static final int FontFamilyFont_fontStyle=4;
/**
* <p>This symbol is the offset where the {@link io.ionic.smart19.starter.R.attr#fontWeight}
* attribute's value can be found in the {@link #FontFamilyFont} array.
*
* <p>May be an integer value, such as "<code>100</code>".
*
* @attr name io.ionic.smart19.starter:fontWeight
*/
public static final int FontFamilyFont_fontWeight=5;
}
public static final class xml {
public static final int camera_provider_paths=0x7f0d0000;
public static final int config=0x7f0d0001;
public static final int opener_paths=0x7f0d0002;
public static final int provider_paths=0x7f0d0003;
}
}
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr format="reference" name="coordinatorLayoutStyle"/>
<color name="notification_action_color_filter">#ffffffff</color>
<color name="notification_icon_bg_color">#ff9e9e9e</color>
<color name="notification_material_background_media_default_color">#ff424242</color>
<color name="primary_text_default_material_dark">#ffffffff</color>
<color name="ripple_material_light">#1f000000</color>
<color name="secondary_text_default_material_dark">#b3ffffff</color>
<color name="secondary_text_default_material_light">#8a000000</color>
<declare-styleable name="CoordinatorLayout"><attr format="reference" name="keylines"/><attr format="color|reference" name="statusBarBackground"/></declare-styleable>
<declare-styleable name="CoordinatorLayout_Layout"><attr name="android:layout_gravity"/><attr format="string" name="layout_behavior"/><attr format="reference" name="layout_anchor"/><attr format="integer" name="layout_keyline"/><attr name="layout_anchorGravity">
<flag name="top" value="0x30"/>
<flag name="bottom" value="0x50"/>
<flag name="left" value="0x03"/>
<flag name="right" value="0x05"/>
<flag name="center_vertical" value="0x10"/>
<flag name="fill_vertical" value="0x70"/>
<flag name="center_horizontal" value="0x01"/>
<flag name="fill_horizontal" value="0x07"/>
<flag name="center" value="0x11"/>
<flag name="fill" value="0x77"/>
<flag name="clip_vertical" value="0x80"/>
<flag name="clip_horizontal" value="0x08"/>
<flag name="start" value="0x00800003"/>
<flag name="end" value="0x00800005"/>
</attr><attr format="enum" name="layout_insetEdge">
<enum name="none" value="0x0"/>
<enum name="top" value="0x30"/>
<enum name="bottom" value="0x50"/>
<enum name="left" value="0x03"/>
<enum name="right" value="0x05"/>
<enum name="start" value="0x00800003"/>
<enum name="end" value="0x00800005"/>
</attr><attr name="layout_dodgeInsetEdges">
<flag name="none" value="0x0"/>
<flag name="top" value="0x30"/>
<flag name="bottom" value="0x50"/>
<flag name="left" value="0x03"/>
<flag name="right" value="0x05"/>
<flag name="start" value="0x00800003"/>
<flag name="end" value="0x00800005"/>
<flag name="all" value="0x77"/>
</attr></declare-styleable>
<declare-styleable name="FontFamily"><attr format="string" name="fontProviderAuthority"/><attr format="string" name="fontProviderPackage"/><attr format="string" name="fontProviderQuery"/><attr format="reference" name="fontProviderCerts"/><attr name="fontProviderFetchStrategy">
<enum name="blocking" value="0"/>
<enum name="async" value="1"/>
</attr><attr format="integer" name="fontProviderFetchTimeout">
<enum name="forever" value="-1"/>
</attr></declare-styleable>
<declare-styleable name="FontFamilyFont"><attr name="fontStyle">
<enum name="normal" value="0"/>
<enum name="italic" value="1"/>
</attr><attr format="reference" name="font"/><attr format="integer" name="fontWeight"/><attr name="android:fontStyle"/><attr name="android:font"/><attr name="android:fontWeight"/></declare-styleable>
<dimen name="compat_button_inset_horizontal_material">4dp</dimen>
<dimen name="compat_button_inset_vertical_material">6dp</dimen>
<dimen name="compat_button_padding_horizontal_material">8dp</dimen>
<dimen name="compat_button_padding_vertical_material">4dp</dimen>
<dimen name="compat_control_corner_material">2dp</dimen>
<dimen name="notification_action_icon_size">32dp</dimen>
<dimen name="notification_action_text_size">13sp</dimen>
<dimen name="notification_big_circle_margin">12dp</dimen>
<dimen name="notification_content_margin_start">8dp</dimen>
<dimen name="notification_large_icon_height">64dp</dimen>
<dimen name="notification_large_icon_width">64dp</dimen>
<dimen name="notification_main_column_padding_top">10dp</dimen>
<dimen name="notification_media_narrow_margin">@dimen/notification_content_margin_start</dimen>
<dimen name="notification_right_icon_size">16dp</dimen>
<dimen name="notification_right_side_padding_top">2dp</dimen>
<dimen name="notification_small_icon_background_padding">3dp</dimen>
<dimen name="notification_small_icon_size_as_large">24dp</dimen>
<dimen name="notification_subtext_size">13sp</dimen>
<dimen name="notification_top_pad">10dp</dimen>
<dimen name="notification_top_pad_large_text">5dp</dimen>
<drawable name="notification_template_icon_bg">#3333B5E5</drawable>
<drawable name="notification_template_icon_low_bg">#0cffffff</drawable>
<item name="line1" type="id"/>
<item name="line3" type="id"/>
<item name="tag_transition_group" type="id"/>
<item name="text" type="id"/>
<item name="text2" type="id"/>
<item name="title" type="id"/>
<integer name="cancel_button_image_alpha">127</integer>
<integer name="status_bar_notification_info_maxnum">999</integer>
<string name="activity_name">@string/launcher_name</string>
<string name="app_name">部机关党建云</string>
<string name="launcher_name">@string/app_name</string>
<string name="status_bar_notification_info_overflow">999+</string>
<style name="TextAppearance.Compat.Notification" parent="@android:style/TextAppearance.StatusBar.EventContent"/>
<style name="TextAppearance.Compat.Notification.Info">
<item name="android:textSize">12sp</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="TextAppearance.Compat.Notification.Info.Media"/>
<style name="TextAppearance.Compat.Notification.Line2" parent="TextAppearance.Compat.Notification.Info"/>
<style name="TextAppearance.Compat.Notification.Line2.Media" parent="TextAppearance.Compat.Notification.Info.Media"/>
<style name="TextAppearance.Compat.Notification.Media"/>
<style name="TextAppearance.Compat.Notification.Time">
<item name="android:textSize">12sp</item>
<item name="android:textColor">?android:attr/textColorSecondary</item>
</style>
<style name="TextAppearance.Compat.Notification.Time.Media"/>
<style name="TextAppearance.Compat.Notification.Title" parent="@android:style/TextAppearance.StatusBar.EventContent.Title"/>
<style name="TextAppearance.Compat.Notification.Title.Media"/>
<style name="Widget.Compat.NotificationActionContainer" parent=""/>
<style name="Widget.Compat.NotificationActionText" parent=""/>
<style name="Widget.Support.CoordinatorLayout" parent="android:Widget">
<item name="statusBarBackground">#000000</item>
</style>
</resources>
\ No newline at end of file
This source diff could not be displayed because it is too large. You can view the blob instead.
package com.cordova.plugins.sms;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.app.PendingIntent;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.content.pm.PackageManager;
import android.net.Uri;
import android.os.Build;
import android.provider.Telephony;
import android.telephony.SmsManager;
import java.util.ArrayList;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.apache.cordova.PluginResult;
import org.json.JSONArray;
import org.json.JSONException;
public class Sms extends CordovaPlugin {
public final String ACTION_SEND_SMS = "send";
public final String ACTION_HAS_PERMISSION = "has_permission";
public final String ACTION_REQUEST_PERMISSION = "request_permission";
private static final String INTENT_FILTER_SMS_SENT = "SMS_SENT";
private static final int SEND_SMS_REQ_CODE = 0;
private static final int REQUEST_PERMISSION_REQ_CODE = 1;
private CallbackContext callbackContext;
private JSONArray args;
@Override
public boolean execute(String action, final JSONArray args, final CallbackContext callbackContext) throws JSONException {
this.callbackContext = callbackContext;
this.args = args;
if (action.equals(ACTION_SEND_SMS)) {
boolean isIntent = false;
try {
isIntent = args.getString(2).equalsIgnoreCase("INTENT");
} catch (NullPointerException npe) {
// It might throw a NPE, but it doesn't matter.
}
if (isIntent || hasPermission()) {
sendSMS();
} else {
requestPermission(SEND_SMS_REQ_CODE);
}
return true;
}
else if (action.equals(ACTION_HAS_PERMISSION)) {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, hasPermission()));
return true;
}
else if (action.equals(ACTION_REQUEST_PERMISSION)) {
requestPermission(REQUEST_PERMISSION_REQ_CODE);
return true;
}
return false;
}
private boolean hasPermission() {
return cordova.hasPermission(android.Manifest.permission.SEND_SMS);
}
private void requestPermission(int requestCode) {
cordova.requestPermission(this, requestCode, android.Manifest.permission.SEND_SMS);
}
public void onRequestPermissionResult(int requestCode, String[] permissions, int[] grantResults) throws JSONException {
for (int r : grantResults) {
if (r == PackageManager.PERMISSION_DENIED) {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, "User has denied permission"));
return;
}
}
if (requestCode == SEND_SMS_REQ_CODE) {
sendSMS();
return;
}
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK, true));
}
private boolean sendSMS() {
cordova.getThreadPool().execute(new Runnable() {
@Override
public void run() {
try {
//parsing arguments
String separator = ";";
if (android.os.Build.MANUFACTURER.equalsIgnoreCase("Samsung")) {
// See http://stackoverflow.com/questions/18974898/send-sms-through-intent-to-multiple-phone-numbers/18975676#18975676
separator = ",";
}
String phoneNumber = args.getJSONArray(0).join(separator).replace("\"", "");
String message = args.getString(1);
String method = args.getString(2);
boolean replaceLineBreaks = Boolean.parseBoolean(args.getString(3));
// replacing \n by new line if the parameter replaceLineBreaks is set to true
if (replaceLineBreaks) {
message = message.replace("\\n", System.getProperty("line.separator"));
}
if (!checkSupport()) {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR, "SMS not supported on this platform"));
return;
}
if (method.equalsIgnoreCase("INTENT")) {
invokeSMSIntent(phoneNumber, message);
// always passes success back to the app
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
} else {
send(callbackContext, phoneNumber, message);
}
return;
} catch (JSONException ex) {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.JSON_EXCEPTION));
}
}
});
return true;
}
private boolean checkSupport() {
Activity ctx = this.cordova.getActivity();
return ctx.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
}
@SuppressLint("NewApi")
private void invokeSMSIntent(String phoneNumber, String message) {
Intent sendIntent;
if ("".equals(phoneNumber) && Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this.cordova.getActivity());
sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("text/plain");
sendIntent.putExtra(Intent.EXTRA_TEXT, message);
if (defaultSmsPackageName != null) {
sendIntent.setPackage(defaultSmsPackageName);
}
} else {
sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", message);
// See http://stackoverflow.com/questions/7242190/sending-sms-using-intent-does-not-add-recipients-on-some-devices
sendIntent.putExtra("address", phoneNumber);
sendIntent.setData(Uri.parse("smsto:" + Uri.encode(phoneNumber)));
}
this.cordova.getActivity().startActivity(sendIntent);
}
private void send(final CallbackContext callbackContext, String phoneNumber, String message) {
SmsManager manager = SmsManager.getDefault();
final ArrayList<String> parts = manager.divideMessage(message);
// by creating this broadcast receiver we can check whether or not the SMS was sent
final BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
boolean anyError = false; //use to detect if one of the parts failed
int partsCount = parts.size(); //number of parts to send
@Override
public void onReceive(Context context, Intent intent) {
switch (getResultCode()) {
case SmsManager.STATUS_ON_ICC_SENT:
case Activity.RESULT_OK:
break;
case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
case SmsManager.RESULT_ERROR_NO_SERVICE:
case SmsManager.RESULT_ERROR_NULL_PDU:
case SmsManager.RESULT_ERROR_RADIO_OFF:
anyError = true;
break;
}
// trigger the callback only when all the parts have been sent
partsCount--;
if (partsCount == 0) {
if (anyError) {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.ERROR));
} else {
callbackContext.sendPluginResult(new PluginResult(PluginResult.Status.OK));
}
cordova.getActivity().unregisterReceiver(this);
}
}
};
// randomize the intent filter action to avoid using the same receiver
String intentFilterAction = INTENT_FILTER_SMS_SENT + java.util.UUID.randomUUID().toString();
this.cordova.getActivity().registerReceiver(broadcastReceiver, new IntentFilter(intentFilterAction));
PendingIntent sentIntent = PendingIntent.getBroadcast(this.cordova.getActivity(), 0, new Intent(intentFilterAction), 0);
// depending on the number of parts we send a text message or multi parts
if (parts.size() > 1) {
ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();
for (int i = 0; i < parts.size(); i++) {
sentIntents.add(sentIntent);
}
manager.sendMultipartTextMessage(phoneNumber, null, parts, sentIntents, null);
}
else {
manager.sendTextMessage(phoneNumber, null, message, sentIntent, null);
}
}
}
package com.ohh2ahh.appavailability;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.content.Context;
import android.content.pm.PackageManager;
public class AppAvailability extends CordovaPlugin {
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) throws JSONException {
if(action.equals("checkAvailability")) {
String uri = args.getString(0);
this.checkAvailability(uri, callbackContext);
return true;
}
return false;
}
// Thanks to http://floresosvaldo.com/android-cordova-plugin-checking-if-an-app-exists
public boolean appInstalled(String uri) {
Context ctx = this.cordova.getActivity().getApplicationContext();
final PackageManager pm = ctx.getPackageManager();
boolean app_installed = false;
try {
pm.getPackageInfo(uri, PackageManager.GET_ACTIVITIES);
app_installed = true;
}
catch(PackageManager.NameNotFoundException e) {
app_installed = false;
}
return app_installed;
}
private void checkAvailability(String uri, CallbackContext callbackContext) {
if(appInstalled(uri)) {
callbackContext.success();
}
else {
callbackContext.error("");
}
}
}
/*
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package cordova.plugins.screenorientation;
import org.apache.cordova.CallbackContext;
import org.apache.cordova.CordovaPlugin;
import org.json.JSONArray;
import org.json.JSONException;
import android.app.Activity;
import android.content.pm.ActivityInfo;
import android.util.Log;
public class CDVOrientation extends CordovaPlugin {
private static final String TAG = "YoikScreenOrientation";
/**
* Screen Orientation Constants
*/
private static final String ANY = "any";
private static final String PORTRAIT_PRIMARY = "portrait-primary";
private static final String PORTRAIT_SECONDARY = "portrait-secondary";
private static final String LANDSCAPE_PRIMARY = "landscape-primary";
private static final String LANDSCAPE_SECONDARY = "landscape-secondary";
private static final String PORTRAIT = "portrait";
private static final String LANDSCAPE = "landscape";
@Override
public boolean execute(String action, JSONArray args, CallbackContext callbackContext) {
Log.d(TAG, "execute action: " + action);
// Route the Action
if (action.equals("screenOrientation")) {
return routeScreenOrientation(args, callbackContext);
}
// Action not found
callbackContext.error("action not recognised");
return false;
}
private boolean routeScreenOrientation(JSONArray args, CallbackContext callbackContext) {
String action = args.optString(0);
String orientation = args.optString(1);
Log.d(TAG, "Requested ScreenOrientation: " + orientation);
Activity activity = cordova.getActivity();
if (orientation.equals(ANY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED);
} else if (orientation.equals(LANDSCAPE_PRIMARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
} else if (orientation.equals(PORTRAIT_PRIMARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
} else if (orientation.equals(LANDSCAPE)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE);
} else if (orientation.equals(PORTRAIT)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT);
} else if (orientation.equals(LANDSCAPE_SECONDARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE);
} else if (orientation.equals(PORTRAIT_SECONDARY)) {
activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT);
}
callbackContext.success();
return true;
}
}
\ No newline at end of file
/*
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
*/
package io.ionic.smart19.starter;
import android.os.Bundle;
import org.apache.cordova.*;
public class MainActivity extends CordovaActivity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
// enable Cordova apps to be started in the background
Bundle extras = getIntent().getExtras();
if (extras != null && extras.getBoolean("cdvStartInBackground", false)) {
moveTaskToBack(true);
}
// Set by <content src="index.html" /> in config.xml
loadUrl(launchUrl);
}
}
<!-- Generated template for the FilterComponent component -->
<ion-content>
<ion-row class="padding-20-10">
<ion-col col-4 *ngFor="let item of list">
<div class="item-style">
{{item}}
</div>
</ion-col>
</ion-row>
</ion-content>
filter {
.item-style{
text-align: center;
background-color: #f2f2f2;
border-radius: 2px;
padding: 6px 2px;
}
}
import { Component } from '@angular/core';
import {NavParams} from "ionic-angular";
@Component({
selector: 'filter',
templateUrl: 'filter.html'
})
export class FilterComponent {
list = [];
constructor(private params:NavParams) {
this.list = this.params.get("list");
console.log(this.list);
}
}
<div class="main">
<div class="content" (click)="close()">
<div class="comment" (click)="stop($event)">
<div class="name">
{{goods.model}}
</div>
<ng-container *ngIf="goods.spe1">
<p class="p-name">规格1</p>
<div class="detail-item">
<span [ngClass]="choose.specs1 == item1?'select':''" *ngFor="let item1 of goods.spe1"
(click)="getSpecs(1,item1)">
{{item1}}
</span>
</div>
</ng-container>
<ng-container *ngIf="goods.spe2">
<p class="p-name">规格2</p>
<div class="detail-item">
<span [ngClass]="choose.specs2 == item2?'select':''" (click)="getSpecs(2,item2)"
*ngFor="let item2 of goods.spe2">
{{item2}}
</span>
</div>
</ng-container>
<ng-container *ngIf="goods.spe3">
<p class="p-name">规格1</p>
<div class="detail-item">
<span *ngFor="let item3 of goods.spe3" [ngClass]="choose.specs3 == item3?'select':''"
(click)="getSpecs(3,item3)">
{{item3}}
</span>
</div>
</ng-container>
<ng-container *ngIf="goods.spe4">
<p class="p-name">规格1</p>
<div class="detail-item">
<span *ngFor="let item4 of goods.spe4" [ngClass]="choose.specs4 == item4?'select':''"
(click)="getSpecs(4,item4)">
{{item4}}
</span>
</div>
</ng-container>
<ng-container *ngIf="goods.spe5">
<p class="p-name">规格1</p>
<div class="detail-item">
<span *ngFor="let item5 of goods.spe5" [ngClass]="choose.specs5 == item5?'select':''"
(click)="getSpecs(5,item5)">
{{item5}}
</span>
</div>
</ng-container>
<div class="choose-num">
<div>申请数量</div>
<div class="num">
<span class="reduce" (click)="reduce()">-</span>
<input type="number" value="1" [(ngModel)]="choose.amount">
<span class="add" (click)="add()">+</span>
</div>
</div>
<button class="submit-btn submit" (click)="submit()">确定</button>
</div>
</div>
</div>
spces {
.main {
background-color: rgba(0, 0, 0, .4);
height: 100%;
}
.content {
position: relative;
height: 100%;
width: 100%;
}
.comment {
position: absolute;
width: 100%;
bottom: 0;
height: 60%;
background: #fff;
border-top-right-radius: 8px;
border-top-left-radius: 8px;
padding: 5px 15px;
.name{
padding: 20px 5px;
font-size: 2rem;
font-weight: bold;
}
ion-icon {
font-size: 3rem;
font-weight: bold;
}
.p-name {
padding: 10px 5px;
font-weight: bold;
}
.detail-item {
margin-bottom: 20px;
margin-top: 10px;
span {
padding: 5px 20px;
background-color: #f2f2f2;
border-radius: 10px;
margin-right: 20px;
border: 1px solid #f2f2f2;
}
span.select{
background-color: #fdf8f2;
border: 1px solid #e42417;
color: #e42417;
}
}
.choose-spces {
display: flex;
div:last-child {
margin-left: auto;
}
}
.choose-num {
display: flex;
div:last-child {
margin-left: auto;
}
.num {
input {
width: 30px;
font-size: 1.2rem;
font-weight: bold;
text-align: center;
background-color: #f2f2f2;
border: 1px solid #f2f2f2;
margin: 0 8px;
}
span{
font-size: 1.6rem;
font-weight: bold;
}
}
}
.submit-btn{
position: absolute;
bottom: 20px;
margin-left: 8%;
}
}
}
import {Component} from '@angular/core';
import {NavParams, ViewController} from "ionic-angular";
/**
* Generated class for the SpcesComponent component.
*
* See https://angular.io/api/core/Component for more info on Angular
* Components.
*/
@Component({
selector: 'spces',
templateUrl: 'spces.html'
})
export class SpcesComponent {
goods;
choose = {
amount: <any>'1',
brand: '',
officeId: '',
model: '',
specs1: '',
specs2: '',
specs3: '',
specs4: '',
specs5: '',
};
constructor(private viewCtrl: ViewController, private params: NavParams) {
this.goods = this.params.get('goods');
if (this.goods.specs1) this.goods.spe1 = this.goods.specs1.split('/');
if (this.goods.specs2) this.goods.spe2 = this.goods.specs2.split('/');
if (this.goods.specs3) this.goods.spe3 = this.goods.specs3.split('/');
if (this.goods.specs4) this.goods.spe4 = this.goods.specs4.split('/');
if (this.goods.specs5) this.goods.spe5 = this.goods.specs5.split('/');
console.log(this.goods)
}
close() {
this.viewCtrl.dismiss();
}
stop(e) {
e.stopPropagation();
}
//增加
add() {
this.choose.amount++;
}
//减少
reduce() {
if (this.choose.amount > 1) {
this.choose.amount--;
}
}
//提交
submit() {
this.choose.brand = this.goods.brand;
this.choose.officeId = this.goods.id;
this.choose.model = this.goods.model;
console.log(this.choose)
this.viewCtrl.dismiss(this.choose);
}
getSpecs(index, item) {
if (index == 1) this.choose.specs1 = item;
if (index == 2) this.choose.specs2 = item;
if (index == 3) this.choose.specs3 = item;
if (index == 4) this.choose.specs4 = item;
if (index == 5) this.choose.specs5 = item;
}
}
<ion-header>
<ion-navbar>
<ion-title>购物车</ion-title>
</ion-navbar>
</ion-header>
<ion-content>
<ng-container *ngFor="let item of cartList">
<div class="goodsItem">
<div class="item-modal">
{{item.suppies.model}}
<span class="margin-left-10">
{{item.specs1}}
</span>
<span class="margin-left-10">
{{item.specs2}}
</span>
</div>
</div>
</ng-container>
</ion-content>
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
import {ServeService} from "../../serve.service";
@Component({
selector: 'page-goods-cart',
templateUrl: 'goods-cart.html',
})
export class GoodsCartPage {
cartList = [];
constructor(public navCtrl: NavController, public navParams: NavParams,
private serveSer:ServeService) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad GoodsCartPage');
this.getCart();
}
getCart(){
const data = {
P_pageNumber:'1',
P_pageSize:'100'
};
this.serveSer.shoppingCar(data).subscribe(
(res)=>{
this.cartList = res.list;
}
)
}
}
<ion-header>
<ion-navbar>
<ion-title>物品领用</ion-title>
<ion-buttons end>
<button ion-button icon-only (click)="goCart()" class="toolbar-icon">
<span style="color: #ffffff" class="icon iconfont icon-cart"></span>
</button>
</ion-buttons>
</ion-navbar>
</ion-header>
<ion-content>
<ion-refresher (ionRefresh)="doRefresh($event)">
<ion-refresher-content pullingText="下拉刷新"
refreshingSpinner="bubbles">
</ion-refresher-content>
</ion-refresher>
<div class="search-div">
<ion-icon class="icon-search" name="search"></ion-icon>
<input class="input-search" [(ngModel)]="obj.params" type="text" placeholder="请输入关键字">
<span class="text" (click)="search()">搜索</span>
</div>
<div class="type-div">
<div class="type-list">
<ng-container *ngFor="let item of typeList">
<div class="type" [ngStyle]="{'color':obj.type == item?'#e42417':''}" (click)="filterType(item)">
{{item}}
</div>
</ng-container>
</div>
<div class="filter-div">
<span class="filter" (click)="fliter()">筛选</span>
</div>
</div>
<ng-container *ngFor="let item of goodsList">
<div class="goodsItem">
<div class="item-modal">
{{item.model}}
<span class="margin-left-10">
{{item.specs1}}
</span>
<span class="margin-left-10">
{{item.specs2}}
</span>
</div>
<div class="item-icon">
<div class="img-star">
<span class="icon iconfont icon-star-simple-surfac"></span>
<span class="icon iconfont icon-star-simple-surfac"></span>
<span class="icon iconfont icon-star-simple-surfac"></span>
<span class="icon iconfont icon-star-simple-surfac"></span>
<span class="icon iconfont icon-star-simple-surfac"></span>
</div>
<div class="img-cart" (click)="choose(item)">
<span class="icon iconfont icon-cart"></span>
</div>
</div>
</div>
</ng-container>
<ion-infinite-scroll (ionInfinite)="doInfinite($event)">
<ion-infinite-scroll-content
loadingSpinner="bubbles"
loadingText="加载中"></ion-infinite-scroll-content>
</ion-infinite-scroll>
</ion-content>
import {NgModule} from '@angular/core';
import {IonicPageModule} from 'ionic-angular';
import {GoodsCollectPage} from './goods-collect';
import {GoodsCartPage} from "./goods-cart/goods-cart";
import {GoodsOrderPage} from "./goods-order/goods-order";
@NgModule({
declarations: [
GoodsCollectPage,
GoodsCartPage,
GoodsOrderPage
],
imports: [
IonicPageModule.forChild(GoodsCollectPage),
],
entryComponents: [
GoodsCartPage,
GoodsOrderPage,
]
})
export class GoodsCollectPageModule {
}
page-goods-collect {
.search-div {
position: relative;
padding: 10px;
.icon-search {
position: absolute;
top: 20px;
left: 20px;
color: #e42417;
font-size: 2.5rem;
}
.input-search {
background-color: #fdf8f2;
border-radius: 30px;
width: 85%;
height: 43px;
border: 1px solid #fdf8f2;
padding-left: 35px;
}
input::-webkit-input-placeholder { /* WebKit browsers */
color: #e42417;
}
input:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #e42417;
}
input::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #e42417;
}
input:-ms-input-placeholder { /* Internet Explorer 10+ */
color: #e42417;
}
.text {
position: absolute;
font-size: 1.6rem;
right: 8px;
top: 10px;
color: #999999;
padding: 10px;
}
}
.type-div{
position: relative;
.type-list{
display: flex;
align-items: center;
overflow-x: hidden;
white-space: nowrap;
.type{
padding: 10px;
font-weight: bold;
}
}
.filter-div{
position: absolute;
right: 0px;
top: 10px;
background-color: #fff;
z-index: 99;
padding-right: 10px;
}
}
.goodsItem {
border-bottom: 1px solid #ccc;
padding: 10px 15px;
.item-icon{
display: flex;
margin-top: 10px;
.img-star{
flex-direction: column;
flex-flow: column;
color: #facd70;
}
.img-cart{
margin-left: auto;
color: #c93638;
}
}
}
}
import {Component, ViewChild} from '@angular/core';
import {InfiniteScrollContent, IonicPage, ModalController, NavController, NavParams} from 'ionic-angular';
import {ServeService} from "../serve.service";
import {FilterComponent} from "../../../components/filter/filter";
import {timer} from "rxjs/observable/timer";
import {CommonService} from "../../../provide/common.service";
import {CommentComponent} from "../../../components/comment/comment";
import {SpcesComponent} from "../../../components/spces/spces";
import {GoodsCartPage} from "./goods-cart/goods-cart";
@IonicPage()
@Component({
selector: 'page-goods-collect',
templateUrl: 'goods-collect.html',
})
export class GoodsCollectPage {
@ViewChild(InfiniteScrollContent) infiniteScrollContent: InfiniteScrollContent;
goodsList = []; //商品列表
typeList = []; //分类
pageNumber = 1;
pageSize = 20;
obj = {
params: '',
type: ''
};
totalNum;
isLoad = true;
loadMore = true;
chooseObj;
constructor(public navCtrl: NavController, public navParams: NavParams,
private serveSer: ServeService, private modalCtrl: ModalController,
private commonSer: CommonService) {
}
ionViewDidLoad() {
this.getList();
this.getTypeList();
}
search(){
this.pageNumber = 1;
this.getList();
}
filterType(item){
this.obj.type = item;
this.getList();
}
//商品列表
getList() {
const data = {
P_pageNumber: this.pageNumber,
P_pageSize: this.pageSize,
param1: this.obj.params,
type: this.obj.type
};
this.serveSer.searchSupplies(data).subscribe(
(res) => {
this.goodsList = res.list;
this.totalNum = res.total;
}
)
}
//分类列表
getTypeList() {
this.serveSer.getTypeList().subscribe(
(res) => {
this.typeList = res.data;
}
)
}
//打开过滤条件
fliter() {
this.modalCtrl.create(FilterComponent, {list: this.typeList}, {
enterAnimation: 'modal-from-right-enter',
leaveAnimation: 'modal-from-right-leave'
}).present();
}
//下拉刷新
doRefresh(e) {
this.loadMore = true;
this.infiniteScrollContent.inf.enable(true);
const data = {
P_pageNumber: 1,
P_pageSize: this.pageSize,
param1: this.obj.params,
type: this.obj.type
};
this.serveSer.searchSupplies(data).subscribe(
(res) => {
this.goodsList = res.list;
this.totalNum = res.total;
timer(800).subscribe(() => {
this.commonSer.toast('刷新成功');
e.complete()
});
}
)
}
//加载更多
doInfinite(e) {
console.log("doInfinite")
if (this.totalNum == this.goodsList.length) {
console.log("没有更多了")
this.loadMore = false;
e.enable(false);
return false;
}
this.pageNumber++;
const data = {
P_pageNumber: this.pageNumber,
P_pageSize: this.pageSize,
param1: this.obj.params,
type: this.obj.type
};
this.serveSer.searchSupplies(data).subscribe(
(res) => {
this.totalNum = res.total;
res.list.forEach(e => {
this.goodsList.push(e);
});
timer(800).subscribe(() => e.complete());
}
)
}
//选择规格 数量
choose(item){
const goods = item;
let modal = this.modalCtrl.create(SpcesComponent, {goods: goods});
modal.onDidDismiss(res => {
if (res) {
this.chooseObj = res;
this.addCart();
}
})
modal.present();
}
//添加到购物车
addCart(){
const data = {
"status":1,
"orderSuppies":[this.chooseObj]
};
this.serveSer.saveOrder(data).subscribe(
(res)=>{
}
)
}
//购物车
goCart(){
this.navCtrl.push(GoodsCartPage);
}
}
<ion-header>
<ion-navbar>
<ion-title>goodsOrder</ion-title>
</ion-navbar>
</ion-header>
<ion-content padding>
</ion-content>
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams } from 'ionic-angular';
@Component({
selector: 'page-goods-order',
templateUrl: 'goods-order.html',
})
export class GoodsOrderPage {
constructor(public navCtrl: NavController, public navParams: NavParams) {
}
ionViewDidLoad() {
console.log('ionViewDidLoad GoodsOrderPage');
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment